Pie*_*tro 74 windows-7 command-line batch-file
我想将此 Linux/Bash 脚本转换为 Windows shell:
if test -d myDirName; then echo "ok"; else mkdir myDirName; fi
Run Code Online (Sandbox Code Playgroud)
它测试目录是否存在,如果不存在则创建它。
Sat*_*hat 98
@echo off
IF exist myDirName ( echo myDirName exists ) ELSE ( mkdir myDirName && echo myDirName created)
Run Code Online (Sandbox Code Playgroud)
由 Barlop 添加
虽然上述适用于这种特殊情况,但标题说的是专门针对目录进行测试。Phogg 的评论使用if exist mydirname\
而不是if exist mydirname
方式。一些答案使用了 \nul 但 \nul 在 NT 中是有问题的。不包括尾随反斜杠将测试文件或目录。因此,对于目录,请包含尾部反斜杠。
小智 22
这是我刚刚发现的:
您可以测试是否存在空文件;如果目录存在,它将包含一个空文件,如果空文件不存在,则该目录不存在。
IF exist myDirName/nul ( echo myDirName exists ) ELSE ( mkdir myDirName && echo myDirName created)
Run Code Online (Sandbox Code Playgroud)
小智 12
使用反斜杠,而不是正斜杠:myDirName\nul
不myDirName/nul
md foo
echo.>bar
for %I in (foo bar xyz) do @(
if exist %I (
if exist %I\nul (
echo -- %I is a directory
) else (
echo -- %I is a file
)
) else (
echo -- %I does not exist
)
)
Run Code Online (Sandbox Code Playgroud)
-- foo 是一个目录
-- bar 是一个文件
-- xyz 不存在
编辑:这仅适用于目录名称不包含空格的情况
有些人建议使用 \nul,但这在 NT 中似乎并不可靠
C:\blah>md abc
C:\blah>if exist abc\nul echo yes
yes
C:\blah>if exist "abc\nul" echo yes
C:\blah>
Run Code Online (Sandbox Code Playgroud)
http://www.dostips.com/forum/viewtopic.php?f=3&t=4913
foxidrive writes-
The trick with nul worked in pre NT versions of windows.
Now you would use this, with a trailing backslash.
if exist "C:\abcde\" echo the folder exists
Run Code Online (Sandbox Code Playgroud)
重新提问
C:\blah>if exist "abcd\" (echo yes) else (echo no && mkdir abcd)
no
C:\blah>if exist "abcd\" (echo yes) else (echo no && mkdir abcd)
yes
C:\blah>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
269400 次 |
最近记录: |