Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

Woorden tellen in batchvorm

Pagina: 1
Acties:

Verwijderd

Topicstarter
Is er een manier om woorden van Office documenten te tellen, zonder hierbij de applicatie op te starten? Misschien bestaat hier een batch-tool voor?

Ik moet van zo'n 450 Word- en 120 Excel-documenten het aantal woorden bepalen en 1 voor 1 openen en tellen gaat véél tijd kosten.

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Waarom de applicatie niet starten? Maak een (VBA-)macro die in een loopje alle files opent en de standaard Words.Count-functie aanroept. In Word dan. In Excel zal je jezelf eerst moeten afvragen wat een woord is (met of zonder functies; voor of na input / functies; zegt het aantal eigenlijk wel iets in Excel), maar dan zal het wel iets dergelijks zijn.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

Voor de Excel bestanden weet ik het niet, maar Voor de Word bestanden zou je het volgende kunnen doen:
- Boot Ubuntu/Knoppix/etc. vanaf een cd
- Mount je NTFS schijf/SMB (netwerk) share
- cd naar de map met je word bestanden
- maak een bestand met de onderstaande inhoud (mousepad scriptje_word.sh)
- chmod -x dat bestand
- doe ./scriptje_word.sh (om de uitvoer op je scherm te zien)
of doe ./scriptje_word.sh>aantal_woorden_word.csv om een csv met de bestandsnaam en het aantal woorden te krijgen.

Bash:
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
# zie http://codesnippets.joyent.com/posts/show/1105 voor de reden van het veranderen van de IFS
ORIGINAL_IFS=$IFS
IFS=$'\n'
ls --quoting-style=escape *.doc | while read DOC;
do
        echo -n $DOC";"
        catdoc $DOC | wc -w
done
IFS=$ORIGINAL_IFS


de uitvoer is:
bestandsnaam1.doc;54
ander bestand.doc;234

Het bovenstaande gaat er trouwens van uit dat alle word-documenten in één map staan. Als je ook submappen hebt moet je "ls ... *.doc" vervangen door "find . -type f -name \*.doc"

Edit:
Voor de Excel bestanden zou je catdoc $DOC kunnen vervangen door xls2csv -c " " $DOC . Dit werkt echter niet bij xlsx bestanden, en ook niet bij sommige xls bestanden. Maar het geeft in ieder geval een redelijke benadering.

[ Voor 19% gewijzigd door Verwijderd op 25-08-2008 10:00 ]