Avatar billede askalot Mester
14. august 2011 - 17:16 Der er 1 kommentar og
1 løsning

Windows Commandline - for loop fejler med specifikke paths

Hey, jeg synes det er sjovt at lave små scripts der gør noget ved en/flere filer.

Jeg plerjer at bruge et for loop

for %%a in (%*) do (
DO_SOMTHING %aa
)

- Dette virker 99% af gangene.. men fornyligt opdagede jeg at det kan fejle.

For at test, lav en c:\test.bat fil med inholdet:

ECHO ---------------------- > c:\testout.txt
for %%a in (%*) do (
ECHO %%a >> c:\testout.txt
)


Test#1.
Lav en tom textfil, i roden af c, med navnet "hej.txt"
Drag drop den fil oven på test.bat

Test#2.
Lav en mappe i c:\ med navnet: hej(foo.bar)
Inde i den mappe lav en tom hej.txt fil.
(så den komplette sti bliver c:\hej(foo.bar)\hej.txt
Drag drop oven på test.bat

Resultat:

Test#1: I testout.txt se a filnavnet bliver læst korrekt.

Test#2: filnavnet bliver IKKE outputtet i testout.txt

--------

Hvis man IKKE bruger forloopet..så virker det, så der er et eller/andet med dét der for %* som fejler..

--

Synes det er et svært spørgsmål, så 200 til den der kan løse det ^^
14. august 2011 - 19:00 #1
... tror du skal have nogle " " omkring 'filnavnet' i Scriptet ?
Eksempelvis: Hvis filnavnet indeholder mellemrums tegn, så vil der typisk gå 'ged' i det ???
Avatar billede askalot Mester
14. august 2011 - 19:07 #2
Nej det har ikke noget med det at gøre? , de eksempler jeg viser har jo ikke nogen mellemrum..

det ER for(%*) der ikke kan håndtere mapper der ender med (foo.bar) .. hvor foo og bar  kan være hvad somehelst.

Jeg har selv fundet løsningen:

Hvis man bruger den "gamle" måde at loope på så fungerer det igen

@ECHO OFF
:Loop
IF "%1"=="" GOTO Continue
DOM_SOMETHING %1
SHIFT
GOTO Loop
:Continue
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester