Я хотел бы перевести этот скрипт Linux / Bash в оболочку Windows:
if test -d myDirName; then echo "ok"; else mkdir myDirName; fi
Он проверяет, существует ли каталог, а если нет, то создает его.
windows-7
command-line
batch-file
Pietro
источник
источник
mkdir -p myDirName
. Потратив дни на попытки перевести относительно простые bash-скрипты в batch-sh * t (присвоение результата функции переменной?), Я решил просто заставить людей установить cygwin.Ответы:
Добавлено Barlop
Хотя вышесказанное работает для данной конкретной ситуации, в заголовке говорится о тестировании специально для каталога. Комментарий Фогга,
if exist mydirname\
а неif exist mydirname
способ. Некоторые ответы использовали \ nul, но \ nul проблематичен в NT. Не включая завершающую обратную косую черту будет проверять файл или каталог. Так, для каталога, включите обратную косую черту.источник
if exist mydirname\
а остальное как вы говорите. С другой стороны, вы можете получитьtest
двоичный файл и использовать его в Windows.mkdir
это сделать.if not 1==1 echo hmm
или если существует myDirName \ ELSE blahblahblahВот что я только что узнал:
Вы можете проверить, существует ли файл nul; если каталог существует, он будет содержать nul-файл, если nul-файл не существует, то каталог не существует.
источник
if exist dirname
которая, кажется, специфична для Windows NT.\nul
, что в Windows NT больше нет необходимости, обычныйif exist "C:\Program Files (x86)"
должен работать (если вы все еще не нацелены на Windows 98 ...)Используйте обратную косую черту, а не прямую косую черту:
myDirName\nul
неmyDirName/nul
- foo - это каталог
- bar - это файл
- xyz не существует
редактировать: это работает, только если имя каталога не содержит пробелов
источник
Некоторые предлагали сделать \ nul, но в NT это не работает надежно
http://www.dostips.com/forum/viewtopic.php?f=3&t=4913
Ре вопрос
источник
Я задавался вопросом, почему у Джо было отрицательное мнение, поскольку у меня была такая же проблема в Windows 7, а именно, что
Если существует имя файла \ NUL
возвращал TRUE для файлов и каталогов. Я нашел альтернативное решение на www.robvanderwoude.com/battech_ifexistfolder.php и предложил пересмотренную версию цикла FOR DVF:
источник
Я вижу, что у многих есть проблемы с различием между файлами и папками. Кто-нибудь пробовал просто войти в него после проверки его существования? Тогда CD будет либо успешным, либо неудачным.
источник
MyDir
после первой строки должны быть%MyDir%
. (2) Неcd ..
будет делать то, что вы хотите, если%MyDir%
это многоуровневое имя пути (например,Pictures\cats
) или даже абсолютный путь (например,\Windows
). Подумайте об использованииpushd
/popd
и / илиsetlocal
.также верно, если myDirName - это файл, то есть не найденная функциональность
источник
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>
я не фанат \ nul в NT, но это не так. Вы должны были дать какой-то вывод.Поиск папки не должен быть таким сложным. Мое решение, используйте Perl:
источник