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

[batch]programma uitvoeren op meerdere bestanden

Pagina: 1
Acties:

Verwijderd

Topicstarter
Goedendag,

Ik ben op dit moment bezig met mijn masterscriptie. Voor het verzamelen van mijn data converteer ik bestanden met behulp van een programmatje (van .aaa naar .bbb). Dit programma werkt in dos. Ik voer het als volgt uit:

programma bestand.aaa > bestand.bbb
Na het uitvoeren hiervan is bestand.aaa geconverteerd naar bestand.bbb.

De naam van het bestand blijft dus gelijk. Er komt alleen een nieuw (geconverteerd) bestand bij met een andere extensie.

Het probleem: ik moet dit voor een paar duizend bestanden doen. Handmatig is dus geen oplossing.

Ik heb ondertussen uitgevonden dat ik met behulp van een batch bestand verschillende dos-commando's achter elkaar kan 'plakken'. Ook heb ik het een en ander gevonden over variabelen. De dingen die ik geprobeerd heb lijken niet echt in de buurt van een oplossing te komen. Ondertussen ben ik hier al de hele middag mee aan het puzzelen terwijl ik me niet kan voorstellen dat dit moeilijk is.

wat ik wil:
-Maak een lijst met alle .aaa bestanden in een map.
-Pak het eerste bestand van de lijst en converteer dit.
-Doe dit tot de lijst is uitgeput.

Wie kan mij vertellen hoe ik hier een batch bestand van maak? Of wie helpt me uit de brand....

Alvast bedankt voor jullie hulp! (suggesties in een andere richting zijn uiteraard ook welkom)

Boudewijf

  • itons
  • Registratie: Oktober 2003
  • Niet online
heb geen verstand van puur batch, maar met wat simpel script werk is dit snel en simpel te doen in AutoIT script.

  • Nielson
  • Registratie: Juni 2001
  • Laatst online: 07:49
-Maak een lijst met alle .mid bestanden in een map.
-Pak het eerste bestand van de lijst en converteer dit.
-Doe dit tot de lijst is uitgeput.
Dat kan met een heel simpel 'FOR' loopje. Kijk bv eens op deze pagina voor uitleg en voorbeelden.

  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 08:04

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

met onderstaande regel zou je al een heel eind moeten brengen als je dit in een command prompt gooit

For /F %A in ('dir directory\*.mid /b') do programma %A.aaa %A.bbb

.

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B


  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Moet jij die scriptie maken, of wil je dat wij het doen?

Als ik naar de 3 dingen kijk wat je wil doen, zonder dat je maar 1 regel batch-code post, denk ik dat je nog helemaal niets zelf hebt gedaan.

Maar kijk eens naar het commando FOR, meer heb je niet nodig.

Edit: /laat met de FOR

[ Voor 5% gewijzigd door RaZ op 27-07-2010 16:26 ]

Ey!! Macarena \o/


  • Poltergeist
  • Registratie: Oktober 2000
  • Laatst online: 25-11 11:33
forfiles /p "c:\test\test\" /m "*.mid" /c "programma @file @file.nieuweExtensie", maar FOR is misschien net wat flexibeler...

[ Voor 21% gewijzigd door Poltergeist op 27-07-2010 16:29 ]


  • RemcoDelft
  • Registratie: April 2002
  • Laatst online: 03-05 10:30
RaZ schreef op dinsdag 27 juli 2010 @ 16:25:
Moet jij die scriptie maken, of wil je dat wij het doen?
>:)

Ontopic: vergeet DOS! Pak een Ubuntu LIVE-CD (of enige andere Linuxdistributie) en ga met bash aan de slag. Aanzienlijk krachtiger, en met een paar commando's (find, grep, sed, head/tail, dirname, basename, etc.) kan ze zeer snel bewerkingen uitvoeren op files.

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Poltergeist schreef op dinsdag 27 juli 2010 @ 16:28:
forfiles /p "c:\test\test\" /m "*.mid" /c "programma @file @file.nieuweExtensie", maar FOR is misschien net wat flexibeler...
C:\>forfiles
'forfiles' is not recognized as an internal or external command,
operable program or batch file.

Ik weet niet welke Windows jij draait, maar hier in XP Pro, gaat dat dus niet werken.
RemcoDelft schreef op dinsdag 27 juli 2010 @ 16:31:
[...]

>:)

Ontopic: vergeet DOS! Pak een Ubuntu LIVE-CD (of enige andere Linuxdistributie) en ga met bash aan de slag. Aanzienlijk krachtiger, en met een paar commando's (find, grep, sed, head/tail, dirname, basename, etc.) kan ze zeer snel bewerkingen uitvoeren op files.
En hoe ga je linux meuk uitvoeren op een Windows machine (even gesteld dat er geen cygwin op staat).

In batch (of via powershell, of vbscript) wat native ondersteund wordt, is ook krachtig zat. Beetje maf om eerst te moeten rebooten om een script te kunnen draaien vindt je niet ;)

En daarnaast werkt het programma wat ie wilt starten ook niet on *nix natuurlijk :P

[ Voor 3% gewijzigd door RaZ op 27-07-2010 16:37 ]

Ey!! Macarena \o/


Verwijderd

Topicstarter
RaZ schreef op dinsdag 27 juli 2010 @ 16:25:
Moet jij die scriptie maken, of wil je dat wij het doen?

Als ik naar de 3 dingen kijk wat je wil doen, zonder dat je maar 1 regel batch-code post, denk ik dat je nog helemaal niets zelf hebt gedaan.

Maar kijk eens naar het commando FOR, meer heb je niet nodig.

Edit: /laat met de FOR
Ik wil die scriptie het liefste zelf maken :). Dit dingetje is een minuscuul geheel wat los staat van de rest van mijn scriptie. Een beetje help scheelt mij enorm, en is voor jullie wellicht maar een kleine moeite.

bedankt voor je tip in ieder geval.. kijken hoe ik het daar mee ga redden.

@ Question Mark:
ik krijg als output bij je scriptje het volgende:
c:\>program bestand1.aaa.aaa bestand1.aaa.bbb
c:\>program bestand2.aaa.aaa bestand2.aaa.bbb

dit zou volgens mij c:\>program bestand1.aaa > bestand1.bbb moeten zijn
(kijken of ik dit uitgepuzzeld krijg)

edit:

heb van het ding van Question Mark dit afgeleid:
For /F %A in ('dir directory\*.mid /b') do programma %A %A.bbb

Tussen de laatste %A %A.bbb moet ik nog een > krijgen en dan werkt het denk ik...

[ Voor 9% gewijzigd door Verwijderd op 27-07-2010 16:42 ]


  • RemcoDelft
  • Registratie: April 2002
  • Laatst online: 03-05 10:30
RaZ schreef op dinsdag 27 juli 2010 @ 16:36:
[...]
En hoe ga je linux meuk uitvoeren op een Windows machine
Wat is een "windows machine"? Niet meer dan een harddisk en processor die samen prima kunnen werken van een bootCD.

  • Turdie
  • Registratie: Maart 2006
  • Laatst online: 20-08-2024
FOR

FOR loops

Forfiles

[ Voor 60% gewijzigd door Turdie op 27-07-2010 16:52 ]


  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

RemcoDelft schreef op dinsdag 27 juli 2010 @ 16:48:
[...]

Wat is een "windows machine"? Niet meer dan een harddisk en processor die samen prima kunnen werken van een bootCD.
Een windows machine noem ik een systeem wat Windows draait, en de gewenste software kan uitvoeren.

1 regel in batch is sneller en makkelijker dan een live-cd booten, en een DOS-applicatie starten.

Ey!! Macarena \o/


Verwijderd

Topicstarter
For /F %A in ('dir directory\*.mid /b') do programma %A %A.bbb

in dit laatste stukje gaat het fout... hij moet programma %A > %A.bbb doen.

wanneer ik For /F %A in ('dir directory\*.mid /b') do programma %A > %A.bbb doe krijg ik:

programma bestand1.aaa 1>bestand1.aaa.bbb
programma bestand2.aaa 1>bestand2.aaa.bbb

en het programma wordt dus niet uitgevoerd. Hoe krijg ik die > er op de juiste manier tussen (dus zonder die 1 ervoor)?

  • Nielson
  • Registratie: Juni 2001
  • Laatst online: 07:49
Waarom wil je die > er tussen hebben, wat doet 'programma' precies en welke opties kun je aan dit programma op de commandline meegeven?

Verwijderd

Topicstarter
programma maakt van een midi bestand een bestand in een ander (ook niet-digitaal) leesbaar formaat.

programma.exe werkt met 2 parameters: naam van het input bestand, een >, naam van het output bestand

uit de notatie van het programma(tje):
programma [input] [> output]

dit werkt bv voor 1 bestand: programma bestand.mid > bestand.bbb

verder heeft het programma geen opties.

edit:
bedankt jongens (dames?), het werkt (toch wel)!
For /F %A in ('dir directory\*.mid /b') do programma %A > %A.bbb

[ Voor 13% gewijzigd door Verwijderd op 27-07-2010 17:45 ]


  • Nielson
  • Registratie: Juni 2001
  • Laatst online: 07:49
Wat raar dat die > er dan tussen moet, programma [input] [output] werkt dus niet?

/edit: Dat gedeelte werkrt dus. Verder dat je bestand1.aaa.bbb als output krijgt is wel logisch omdat je een complete bestandsnaam + extensie als input gebruikt en daar .bbb achter plakt. Met de FOR opdracht kun je echter de variabele bewerken tot bv alleen de extensie, alleen de bestandsnaam, etc (zie for /f en dan op de 6e pagina oid). In jouw voorbeeld zou je dan zoiets krijgen:

FOR /F %A in ('dir directory\*.mid /b') DO programma %A > %~nA.bbb

Mocht je bestandsnamen met spaties gebruiken kun je 'm nog iets aanpassen:
FOR /F "tokens=*" %A in ('dir directory\*.mid /b') DO programma "%A" > "%~nA.bbb"

[ Voor 45% gewijzigd door Nielson op 27-07-2010 18:07 ]

Pagina: 1