我有一个包含IP地址列表的excel文件,我已经链接了一个运行简单ping测试的批处理文件,并将结果输出到文本日志。
当我从网络位置运行文件时,它运行没有问题。但是当我运行excel(也位于同一目录中)... ping返回“系统找不到指定的路径”
注意 - 它返回Ping作为无法找到的内容。不是文件输出。
我缺少什么?
ping -n 1 **EXAMPLE** >> Logs\%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt
答案 0 :(得分:0)
Excel通常以Excel的程序文件目录作为当前工作目录启动。因此,您的批处理文件很可能会尝试将 ping 的输出写入Excel中不存在的程序文件目录中的子文件夹日志。即使存在Excel的子目录 Logs 程序文件目录,它也很可能是写保护的。您的批处理代码不应该依赖于启动批处理文件时当前工作目录的任何内容。
Jeeped发布了4个解决方案中的两个。我的答案包含两个,如果修复了 Logs 目录的路径,最后一个解决方案最简单。
ThisWorkbook.Path
作为带有双引号的参数传递给批处理文件,并从批处理文件中引用。
%SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>"%~1\Logs\%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt"
批处理文件中使用了命令cd
。
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
和popd
。
pushd "Path to Logs directory"
%SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt
popd
此解决方案由JosefZ提供,此处已添加完整性。
为目录日志中的文本文件指定了完整路径和名称。
%SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>"Path to Logs directory\%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt"