[WinXP/Batch] Standaard uitvoer opvangen en vergelijken

Pagina: 1
Acties:

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Batchfile:
1
2
for /f "tokens=1 delims=\" %%a in ("%1") do set drive=%%a
ECHO %drive%


Hiermee laat ik de driveletter zien (bla.bat Z:\ bijv. laat "Z:" zien).

Vervolgens doe ik dit:
Batchfile:
1
2
%drive%
CD \


Hiermee ga ik dus naar de root van Z:.

Het probleem is echter dat ik soms de melding "The parameter is incorrect" krijg. Opzich geen ramp, dit zou ik allemaal moeten kunnen opvangen, maar het probleem hiermee is dat ik het niet voor elkaar krijg!

code:
1
2
3
4
5
6
7
C:\Index>FOR /F "tokens=1" %q in ('Z:') do ECHO %q %r %s
The parameter is incorrect.

C:\Index>ECHO
ECHO is on.

C:\Index>CD \


Dit FOR-commando zou elk apart woord in de variabele %q moeten zetten (dit is de output, in de batchfile staat wel gewoon %%q zoals het hoort) en door middel van "ECHO %q" zou ik deze dus moeten kunnen zien.
Ik krijg echter, zoals je kunt zien "ECHO ", wat dus betekent dat %q geen waarde heeft.

Hoe komt dit? Hoe kan ik op een nette manier kijken of het commando "Z:" wel lukt? Het probleem is namelijk dat ik een lijst maak van bestanden en als het switchen naar de directory Z: niet lukt, krijg ik een lijst van alle bestanden op C:, daar heb ik natuurlijk niks aan. :)

Ik heb het ook al geprobeerd met de > operator en dan vervolgens met een FOR het bestand uitlezen, maar de > operator werkt niet als ik dit doe:

%drive% > bla.txt

Hierna is bla.txt gewoon leeg, maar ik krijg wel "The parameter is incorrect." te zien. Het wordt dus wel uitgevoerd, maar de file wordt niet gevuld. :?

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • KabouterSuper
  • Registratie: September 2005
  • Niet online
gebruik je een batch file, of doe je het via een dos prompt? In een batch file moet je %%q gebruiken in plaats van %q in de FOR loop.

When life gives you lemons, start a battery factory


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Tanuki
  • Registratie: Januari 2005
  • Niet online
KabouterSuper schreef op dinsdag 22 mei 2007 @ 18:58:
gebruik je een batch file, of doe je het via een dos prompt? In een batch file moet je %%q gebruiken in plaats van %q in de FOR loop.
"Dit FOR-commando zou elk apart woord in de variabele %q moeten zetten (dit is de output, in de batchfile staat wel gewoon %%q zoals het hoort) en door middel van "ECHO %q" zou ik deze dus moeten kunnen zien."

Lezen...


-NMe-: Ik vind dat het meer in PRG thuishoort hoor.. Maar bedankt voor de move..

[ Voor 8% gewijzigd door Tanuki op 22-05-2007 18:59 ]

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • KabouterSuper
  • Registratie: September 2005
  • Niet online
OK....mijn fout. Poging 2:
l0c4lh0st schreef op dinsdag 22 mei 2007 @ 18:53:

code:
1
2
3
4
5
6
7
C:\Index>FOR /F "tokens=1" %q in ('Z:') do ECHO %q %r %s
The parameter is incorrect.

C:\Index>ECHO
ECHO is on.

C:\Index>CD \
Je voert het commando Z: uit, en interpreteert de output hiervan als een file. Echter, als het commando foutief is, krijg je ook geen output.....zover was je ook al.

Maar kan je het command IF EXIST niet gebruiken? Dus iets in de trant van
code:
1
FOR /F "tokens=1" %q in ('IF EXIST Z: dir Z:') do ECHO %q


Zo doe je alleen een dir Z: als Z: ook bestaat.

When life gives you lemons, start a battery factory


  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Batchfile:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@echo off

for /f "tokens=1 delims=\" %%a in ("%1") do set drive=%%a

%drive%

for /f "tokens=1 delims=\" %%e in ('cd') do set newdrive=%%e

if not %newdrive% == %drive% goto :DRIVENOTWORKING

cd \

[...]

:DRIVENOTWORKING
echo Perhaps the media isn't finished burning yet.
echo Or other programs have high priority causing Windows to not load the media.

pause
goto :DONE

:DONE
C:

cd \Index

pause


Werkt perfect. :Y

Als ik cd Z: doe, dan is de current directory vanaf dan natuurlijk gelijk aan Z:.
Tenzij dit mislukt.

Dom dat ik daar niet eerder aan had gedacht. :)


Ik zou nu alleen nog graag willen weten hoe ik die zin "The parameter is incorrect" niet kan laten zien. Dus eigenlijk de melding onderdrukken. Is niet van groot belang, maar is wel zo netjes. Als ik er een @ tussen gooi krijg ik allemaal rare fouten...

[ Voor 17% gewijzigd door Tanuki op 22-05-2007 21:09 ]

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?

Pagina: 1