批处理文件在我的桌面上正常工作,但不在虚拟桌面上。为什么?
继Check if a file exists in zip archive,我有处理目录中的某些文件的批处理文件,我用这行里面:批处理文件在我的桌面上正常工作,但不在虚拟桌面上。为什么?
call zipjs.bat list -source "C:\myZip.zip" -flat yes|find /i "filename" && (
echo file exists
color
)|| (
echo file does not exist
)
我在同一个目录zipjs.bat
我的批处理文件:
桌面 - > MyBatch.bat
桌面 - > zipjs.bat
MyBatch.bat
调用zipjs.bat
,并在我的机器上正常工作。
问题:
我已经到了一个虚拟机来测试我的代码的访问,这是一个Windows桌面操作系统上运行在其上的一些软件。没有什么花哨。在那里,我还把myBatch.bat
和zipjs.bat
放在同一个目录下(桌面)。但是,每当我运行myBatch
时,它都会提示“zipjs.bat不是可识别的命令”。这就像myBatch
找不到zipjs.bat
。可能是什么问题?
如果蝙蝠以管理员权限启动,它将在system32文件夹中启动。尝试在文件开始时设置cd /d "%~dp0"
(cd命令更改工作目录,并且/d
开关在需要在不同驱动器之间跳转时)。
的%0
参数是这个批处理文件(如果不使用shift
命令),于是有了%~dp0
你的驱动器和path to the file(无文件名)。
另外值得一提的是,正如@Mofi提到的那样,使用''call%〜dp0zipjs。蝙蝠“'而不是'调用zipjs.bat'也可以 –
这是否需要一个路径? – Lexib0y
@ Lexib0y嗯,为什么它没有在我的桌面上的路径工作? –
我的意思是路径环境变量,在桌面上与VM相同吗?但是你也可以尝试把它放在批处理文件中。除非您从该目录中的提示符运行它,或者在运行批处理文件的快捷方式中设置工作目录,否则您需要一个路径环境变量。 (你的桌面默认不在路径中,你也不能确定它是工作目录) – Lexib0y