Ich arbeite mit Windows 'cmd und versuche, eine Variable in einer Schleife zu setzen. Hier ist der Code, den ich habe:CMD versucht Variable in einer Schleife zu setzen
for /d %%a in ("F:\backup*") do set folder=%%a
ECHO %folder%
PAUSE
ich für einen Ordner mit dem Namen mit „backup“ auf Laufwerk F beginnen aussehen will und die Ordnernamen zu% Ordner% Variable speichern. Wenn zum Beispiel der Ordner "backup 2017-01-18" heißen würde, würde ich das gerne in einem var speichern.
Stattdessen scheint es nichts zu setzen, da ECHO nur druckt, dass "ECHO an ist". Die for-Schleife ist korrekt und der Ordner ist auch da (ich verwende diesen Code bereits für andere Stapel mit Robocopy).
Ich könnte theoretisch meinen gesamten Code in die FOR-Schleife setzen und %% anstelle des% -Ordners% var verwenden, aber das scheint eine hacky Lösung zu sein.
Alle Lösungen, die ich bisher gefunden habe, verweisen auf EnableDelayedExpansion. Ich änderte den Code, um es so zu verwenden:
Setlocal EnableDelayedExpansion
for /d %%a in ("F:\backup*") do set folder=%%a
ECHO !folder!
PAUSE
Aber jetzt druckt ECHO "! Ordner!" als würde es die Variable nicht erkennen. Wenn ich zu ECHO% folder% zurückkomme, lerne ich noch einmal, dass "ECHO an ist".
EDIT: Ich habe das Problem hier gefunden. Ich habe auch eine andere Batch-Datei im Backup-Ordner ausgeführt. Es stellt sich heraus, dass ROBOCOPY (das ich in diesem Stapel verwendete) den umschließenden Ordner standardmäßig auf versteckt, system- und schreibgeschützt setzt (auch wenn kopierte Dateien nicht versteckt sind oder System o_0). Als ich HSR-Attribute auf dem Verzeichnis entfernte, begann der Code, der hier gepostet wurde, gut (die anfängliche Version).
Ist dieser Satz von Code in einem anderen Codeblock? Ihr erster Satz Code funktioniert für mich ganz gut. – Squashman
Nein, dies ist die gesamte Stapeldatei, die ich manuell ausführe. – ilozen
Dann ist F: \ backup * nicht vorhanden. – Squashman