Ich habe kürzlich eine ähnliche Zeile in eine CMD-Datei eingefügt:
for /f %%f in ('dir /b .\directory\*.sql') DO sqlcmd -b -o ".\directory\output\%%f.txt" -i ".\directory\%%f"
Ursprünglich hatte ich nur% f verwendet, und es würde gut funktionieren, wenn es in der Befehlszeile ausgeführt wird, aber nicht, wenn es durch die Datei ausgeführt wird. Als ich zu %% f wechselte, funktionierte es in der Datei. Ich frage mich nur, was der Unterschied ist.
quelle
Unter DOS konnten Sie keine Umgebungsvariablen in der Befehlszeile verwenden, sondern nur in Batchdateien, in denen das
%
Zeichen als Trennzeichen verwendet wurde. Wenn Sie ein Literalzeichen%
in einer Batchdatei wünschen, z. B. in einerecho
Anweisung, müssen Sie es verdoppeln.Dies wurde auf Windows NT übertragen, das Umgebungsvariablen in der Befehlszeile zuließ. Aus Gründen der Abwärtskompatibilität müssen Sie jedoch Ihre
%
Vorzeichen in einer CMD-Datei verdoppeln .quelle