目前我有这个:
for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
if exist "%%d\Program Files (x86)\Folder": (
cd "%%d\Program Files (x86)\Folder\subfolder\file"
)
)
但它似乎并没有起作用。我希望批处理脚本搜索驱动器是否存在某个程序的子文件夹,然后cd到.ini文件的位置(如果有)。该文件也可能位于/ program files /以外的位置,即它可能位于driveletter:\ Folder。
非常感谢任何帮助!
答案 0 :(得分:2)
您的代码存在一些问题:
以下更改应该有效:
a
但是有一种更好的方法 - 您可以在不验证文件夹存在的情况下尝试CD,并将任何错误消息重定向到null。
for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
if exist "%%d:\Program Files (x86)\Folder\subfolder\" (
cd /d "%%d:\Program Files (x86)\Folder\subfolder"
)
)
如果你想检测CD是否最终成功,那么你可以使用for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
cd /d "%%d:\Program Files (x86)\Folder\subfolder" 2>nul
)
有条件地摆脱循环,这样ERRORLEVEL在成功时将为0,或者在失败时为1。
&&
除了检测到succuess / error之外,如果子文件夹存在于两个不同的驱动器上,则与最后一个选项存在另一个差异。前两个选项最终CD到最后找到的子文件夹。最后一个选项将CD发送到第一个找到的子文件夹。
答案 1 :(得分:0)
if exist "%programfiles(x86)%\Folder\subfolder\file" (
echo it's alive!
)
这是有效的吗?为什么要遍历所有这些字母?
答案 2 :(得分:0)
在Windows中,您应该使用环境变量来访问程序文件文件夹,这样您就不必检查现有的驱动器。
查看http://ss64.com/nt/syntax-variables.html或在命令提示符下输入set
。
在您的情况下,您应该使用%ProgramFiles(x86)%