Ich möchte dieses Linux / Bash-Skript in die Windows-Shell übersetzen:
if test -d myDirName; then echo "ok"; else mkdir myDirName; fi
Es wird geprüft, ob ein Verzeichnis vorhanden ist, und wenn nicht, wird es erstellt.
windows-7
command-line
batch-file
Pietro
quelle
quelle
mkdir -p myDirName
. Nachdem ich tagelang versucht hatte, relativ einfache Bash-Skripte in Batch-Sh * T zu übersetzen (das Ergebnis einer Funktion einer Variablen zuzuweisen?), Habe ich mich dazu entschlossen, nur Leute dazu zu bringen, Cygwin zu installieren.Antworten:
Hinzugefügt von Barlop
Während das Obige für diese spezielle Situation funktioniert, besagt der Titel über das Testen speziell für ein Verzeichnis. Phoggs Kommentar verwendet
if exist mydirname\
eher alsif exist mydirname
den Weg. Einige Antworten haben \ nul verwendet, aber \ nul ist unter NT problematisch. Ohne einen abschließenden Backslash wird nach einer Datei oder einem Verzeichnis gesucht. Fügen Sie für ein Verzeichnis den nachgestellten Backslash ein.quelle
if exist mydirname\
und der Rest, wie Sie sagen. Alternativ können Sie auch einetest
Binärdatei abrufen und diese unter Windows verwenden.mkdir
.if not 1==1 echo hmm
existiert oder wenn myDirName \ ELSE existiert blahblahblahFolgendes habe ich gerade herausgefunden:
Sie können testen, ob eine NUL-Datei vorhanden ist. Wenn das Verzeichnis existiert, enthält es eine nul-Datei. Wenn die nul-Datei nicht existiert, existiert das Verzeichnis nicht.
quelle
if exist dirname
die für Windows NT spezifisch zu sein scheinen.\nul
Windows NT ist dies nicht mehr erforderlich.if exist "C:\Program Files (x86)"
Nur sollte es funktionieren (es sei denn, Sie haben noch Windows 98 im Visier ...)Verwenden Sie einen Backslash, keinen Forward-Slash:
myDirName\nul
nichtmyDirName/nul
- foo ist ein Verzeichnis
- bar ist eine Datei
- xyz existiert nicht
Bearbeiten: Dies funktioniert nur, wenn der Verzeichnisname keine Leerzeichen enthält
quelle
Einige haben vorgeschlagen, dies zu tun, aber dies scheint unter NT nicht zuverlässig zu funktionieren
http://www.dostips.com/forum/viewtopic.php?f=3&t=4913
Zu der Frage
quelle
Ich fragte mich, warum Joe eine Ablehnung hatte, als ich unter Windows 7 das gleiche Problem hatte, nämlich das
WENN EXISTIEREN Dateiname \ NUL
gab TRUE sowohl für Dateien als auch für Verzeichnisse zurück. Ich habe unter www.robvanderwoude.com/battech_ifexistfolder.php eine alternative Lösung gefunden und mir eine überarbeitete Version der FOR-Schleife von DVF ausgedacht :
quelle
Ich sehe viele Probleme mit der Unterscheidung zwischen Dateien und Ordnern. Hat jemand versucht, einfach eine CD einzuspielen, nachdem er überprüft hat, ob sie existiert? Dann wird CD entweder erfolgreich sein oder scheitern.
quelle
MyDir
nach der ersten Zeile sollten sein%MyDir%
. (2) Siecd ..
werden nicht tun, was Sie wollen, wenn%MyDir%
es sich um einen mehrstufigen Pfadnamen (z. B.Pictures\cats
) oder sogar einen absoluten Pfadnamen (z\Windows
. B. ) handelt. Erwägen Sie die Verwendung vonpushd
/popd
und / odersetlocal
.Dies gilt auch dann, wenn myDirName eine Datei ist, bei der es sich nicht um die gesuchte Funktionalität handelt
quelle
C:\blah>touch abe<ENTER>C:\blah>if exist abe\nul echo err<ENTER> C:\blah>if exist abe/nul echo err<ENTER>C:\blah>
Ich bin kein Fan von \ nUl in NT, aber es ist nicht. Du hättest etwas ausgeben sollen.Einen Ordner zu finden sollte nicht so schwierig sein. Meine Lösung, benutze Perl:
quelle