Ga naar inhoud

Batch met % erin


Aanbevolen berichten

  • Reacties 20
  • Aangemaakt
  • Laatste reactie

Beste reacties in dit topic

Beste reacties in dit topic

Op de cmd line is % een karakter als een ander en zal ook als zodanig behandeld worden.

In een batch bestand geeft het % aan dat er een externe parameter volgt.

In jouw geval geef je geen parameter mee aan het .bat bestand en dus loopt dit vast.

Ik neem je eigen voorbeeld uit post nr5

in cmd intypen: md test%02  => Gevolg is nieuwe map met naam test%02
nu maak ik een batchbestand (test123.bat) met daarin: md test%02

In het batchbestand moet je zetten md %1 waarbij de %1 aangeeft dat er een parameter komt.

Uitvoeren moet dan als volgt: test123.bat test%02 waarbij test%02 de parameter is

concreet nu.

Je hebt 2 mogelijkheden.

Ofwel gebruik je een bestandsnaam zonder % in bvb test02d.trc

Ofwel zet je in het batchbestand

Trace test.fop resultaten=%1 batch=2,0,0,0

en je voert het uit met xyz. bat test%02d.trc

De tweede manier heeft het voordeel dat je voor elke uitvoering een ander bestand kan opgeven zonder het batchbestand te moeten aanpassen.

Link naar reactie
Delen op andere sites

@ Stegisoft:

Het commando dat ik ingeef is specifiek voor dat Trace-programma. Aangezien jij dat programma niet hebt, kan je het dus ook niet testen. Maar je moet van mij aannemen dat het onderstaande commando het juiste is dat in cmd ingevoerd moet worden.

Trace test.fop resultaten=test%02d.trc batch=2,0,0,0

Ik heb in mijn vorige post even uitgelegd waar alle stukjes op slaan (ter verduidelijking dacht ik), maar aan dat commando kan dus niks veranderd worden. Omdat ik dat commando meerdere keren (ongeveer 100+ keer) uit moet voeren, dacht ik: ik maak een batch bestand met die regel daarin zodat als ik het batchbestand open, deze regel automatisch uitgevoerd wordt. Alleen liep ik toen dus vast op het stukje met %0.

Dus: nee, je kan het helaas niet testen... Maar het is vergelijkbaar met elk ander commando dat een %0 bevat (zoals mijn voorbeeld in post 5 over het aanmaken van een map met een bestandsnaam met daarin %0).

@ kweezie wabbit:

Ik begrijp je uitleg over de % die een parameter nodig heeft (in het batchbestand). Alleen begrijp ik de volgende opmerking niet:

"Uitvoeren moet dan als volgt: test123.bat test%02 waarbij test%02 de parameter is"

Betekent dit dat ik de bestandsnaam [test123.bat test%02] moet maken?

Btw, de 1e mogelijkheid die je bespreekt in je 'concreet nu':

Bestandsnaam zonder %02 => dit is dus niet mogelijk aangezien het commando echt resultaten=test%02d.trc moet heten.

Nou, ik hoop dat 't duidelijk(er) is wat ik wil en dat iemand een oplossing weet. Tnx!

Link naar reactie
Delen op andere sites

Omdat ik niet kan controleren kan je misschien zo doen:

start d:\test.vbs

pauze

Start d:\test2.vbs

pauze

Opslaan als test.bat

path = "D:\test%20"

set filesys=CreateObject("Scripting.FileSystemObject")

If Not filesys.FolderExists(path) Then

Trace test.fop resultaten=test%02d.trc batch=2,0,0,0

End If

Opslaan als test2.vbs

Misschien dat Kweezie Wabbit een beter idee heeft alhoewel ik ook niet begrijp wat hij bedoeld.

Link naar reactie
Delen op andere sites

Nope, helaas...

Misschien nog even ter verduidelijking: het aanmaken van die map%02 was slechts als voorbeeld bedoeld van wat er verkeerd gaat bij een commando met daarin %0. Omdat mijn commando niet door jullie getest kan worden gebruikte ik dus als voorbeeld dat het commando md map%02 wel werkt in cmd, maar niet via een batchbestand.

De oplossing via een vsb-bestand voor het voorbeeld met de map%02 werkt, maar het lukt mij dus (nog) niet om ook Trace test.fop resultaten=test%02d.trc batch=2,0,0,0 via een vsb-bestand uit te voeren. Of kan dit helemaal niet via een vsb-bestand omdat deze slechts alleen mappen kan aanmaken of zo (ik begrijp niet echt wat dat vsb-bestand doet)?

Ik vroeg me trouwens af of er geen mogelijkheid is om te overrulen dat %0 gevolgd moet worden door een parameter? Zoals bijvoorbeeld een 'lege' "delims=" in de commando-regel kan overrulen dat de uitvoer van een 'dir' commando afgekapt wordt vanaf de eerstgevonden spatie of tab.

Link naar reactie
Delen op andere sites

Plaats deze lijn in een leeg kladbok bestand.

Trace test.fop resultaten=%1 batch=2,0,0,0

Sla het bestand op als xyz.bat.

Op de command line typ je dan xyz. bat test%02d.trc om het batchbestand uit te voeren.

Je kan ook xyz. bat test%02d.trc in een 2de batchbestand zetten en dit opslaan als abc.bat.

Dan voer je abc.bat uit die dan xyz gaat opstarten met de juiste parameter.

Zo hoef je niet elke keer de parameter in te tikken.

De namen xyz en abc mag je natuurlijk naar eigen wens aanpassen.

Link naar reactie
Delen op andere sites

Plaats deze lijn in een leeg kladbok bestand.

Trace test.fop resultaten=%1 batch=2,0,0,0

Sla het bestand op als xyz.bat.

Op de command line typ je dan xyz. bat test%02d.trc om het batchbestand uit te voeren.

Ok, dat werkt inderdaad, maar dan moet ik alsnog via de commandline die parameter intypen (als het niet anders kan, dan moet het maar zo helaas...).

Je kan ook xyz. bat test%02d.trc in een 2de batchbestand zetten en dit opslaan als abc.bat.

Dan voer je abc.bat uit die dan xyz gaat opstarten met de juiste parameter.

Zo hoef je niet elke keer de parameter in te tikken.

Voordeel: niks meer zelf intypen :)

Nadeel: dit werkt niet. Want ik heb nog steeds een %0 in een batchbestand staan wat hij niet uit wil voeren, omdat hij op een parameter wacht. Of doe ik iets verkeerd?

Link naar reactie
Delen op andere sites

Ok, dan zal ik het proberen te vereenvoudigen. Het probleem doet zich ook op deze manier voor:

in cmd intypen: md test%02 => Gevolg is nieuwe map met naam test%02

nu maak ik een batchbestand (test123.bat) met daarin: md test%02

Als ik deze run dan krijg ik geen nieuwe map, maar dit komt dan in cmd te staan:

C:\Documents and Settings\blablabla >md test"C:\Documents and Settings\blablabla\test123.bat"2

De syntaxis van de bestandsnaam, mapnaam of volumenaam is onjuist.

Hopelijk is mijn probleem nu duidelijker? ;)

Heb je dit al geprobeerd in uw bat file:

md c:\testM%%02

Dit maakt een map aan met als naam: c:\testM%02

Een algemene opmerking over bat files: Je kan beter altijd het volledige path meegeven, dan is het resultaat niet afhankelijk van de map waar de bat file staat.

Ik hoop dat dit ietsje bijdraagt tot een oplossing. (Bat files stamt ook dan ook uit de oertijd en de kennis daarvan is meestal al fel verwaterd).

Joke

Link naar reactie
Delen op andere sites

Gast
Dit topic is nu gesloten voor nieuwe reacties.

×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.