Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从excel超链接运行时,批处理文件找不到指定路径_Excel_Batch File_Network Drive - Fatal编程技术网

从excel超链接运行时,批处理文件找不到指定路径

从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

我有一个包含IP地址列表的excel文件,我链接了一个批处理文件,该批处理文件运行简单的ping测试并将结果输出到文本日志

当我从网络位置运行文件时,它运行没有问题。但是当我运行同样位于同一目录中的excel时…ping返回系统无法找到指定的路径

注意-它返回Ping作为找不到的内容。不是文件输出

我遗漏了什么

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。在从调用的批处理会话上独立路径,我不确定。明白了!谢谢你们。