从excel超链接运行时,批处理文件找不到指定路径
我有一个包含IP地址列表的excel文件,我链接了一个批处理文件,该批处理文件运行简单的ping测试并将结果输出到文本日志 当我从网络位置运行文件时,它运行没有问题。但是当我运行同样位于同一目录中的excel时…ping返回系统无法找到指定的路径 注意-它返回Ping作为找不到的内容。不是文件输出 我遗漏了什么从excel超链接运行时,批处理文件找不到指定路径,excel,batch-file,network-drive,Excel,Batch File,Network Drive,我有一个包含IP地址列表的excel文件,我链接了一个批处理文件,该批处理文件运行简单的ping测试并将结果输出到文本日志 当我从网络位置运行文件时,它运行没有问题。但是当我运行同样位于同一目录中的excel时…ping返回系统无法找到指定的路径 注意-它返回Ping作为找不到的内容。不是文件输出 我遗漏了什么 ping -n 1 **EXAMPLE** >> Logs\%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt Excel通常以E
ping -n 1 **EXAMPLE** >> Logs\%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt
Excel通常以Excel的程序文件目录作为当前工作目录启动。因此,批处理文件很可能试图将ping的输出写入Excel的program files目录中不存在的日志子文件夹中。即使Excel目录中有一个子目录Logs program files,它也很可能是写保护的。批处理代码不应依赖于启动批处理文件时的当前工作目录
%SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>"%~1\Logs\%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt"
cd /D "Path to Logs directory"
%SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt
pushd "Path to Logs directory"
%SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt
popd
发布了4个解决方案中的两个。我的答案还包含两个,如果日志目录的路径是固定的,那么最后一个解决方案是最简单的
ThisWorkbook.Path作为带有双引号的参数传递给批处理文件,并从批处理文件中引用
%SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>"%~1\Logs\%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt"
cd /D "Path to Logs directory"
%SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt
pushd "Path to Logs directory"
%SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt
popd
批处理文件中使用了命令cd
%SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>"%~1\Logs\%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt"
cd /D "Path to Logs directory"
%SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt
pushd "Path to Logs directory"
%SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt
popd
批处理文件中使用pushd和popd命令
%SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>"%~1\Logs\%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt"
cd /D "Path to Logs directory"
%SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt
pushd "Path to Logs directory"
%SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt
popd
此解决方案由提供,并添加到此处以确保完整性
为目录日志中的文本文件指定完整路径和名称
当您使用命令提示符时,无法保证默认目录将是运行代码的Excel工作簿所在的目录。将ThisWorkbook.Path作为参数传递到.CMD或.BAT文件中,并将其作为%1拾取。或者,在提示下使用CD或CHDIR命令更改默认目录。在您的2中,我宁愿使用pushd Path to Logs目录,而不是CD/D Path to Logs目录,并在…\ping.exe下添加popd行。。。行,不管Excel如何管理它的ThisWorkbook。在从调用的批处理会话上独立路径,我不确定。明白了!谢谢你们。