Ich habe diesen Batch-Skript, das alle Dateien in einem Verzeichnis aufgelistet werden sollte:Batch SET/A in für Schleife Pausen Schleifenvariablen
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET /A cn=0
SET cwd=%~dp0
ECHO Files:
FOR %%I IN (%cwd%\*) DO (
SET /A cn=cn+1
ECHO !cn!
IF "%%I"=="buthow"()
ECHO %%~nxI
)
EXIT /B 0
sagen, wir haben das Dokument d1.txt
, d2.txt
, d3.txt
im Ordner. Der obige Code funktioniert wie erwartet, aber wenn ich die if-Anweisung zu entfernen, die nichts tut, bekomme ich die folgende Ausgabe (?):
1
d1.txt
2
cnd2.txt
3
cnd3.txt
Warum ist das so?
Der Code hat _two_ ECHO-Befehle:! Die 'ECHO cn' Das sollte zeige den Wert der 'cn'-Variablen und' ECHO %% ~ nxI' an, das den Namen und die Erweiterung jeder Datei anzeigen sollte, damit die Ausgabe, die du zeigst, dies beweist der Code "funktioniert wie erwartet" (ohne den seltsamen 'if' Befehl). – Aacini
Kannst du eventuell noch schlampiger werden? Der gepostete Code "funktioniert wie erwartet"?!?! Ich denke nicht, da es einen schwerwiegenden Syntaxfehler mit Ihrer IF-Anweisung gibt. Aber die Ausgabe ohne IF ist genau so, wie es sein sollte. – dbenham
Nein. Die erwartete Ausgabe wäre mit 'd2.txt' anstelle von' cnd2.txt' gewesen. – arkocal