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

时间:2014-11-17 16:22:58

标签: 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

enter image description here

1 个答案:

答案 0 :(得分:0)

Excel通常以Excel的程序文件目录作为当前工作目录启动。因此,您的批处理文件很可能会尝试将 ping 的输出写入Excel中不存在的程序文件目录中的子文件夹日志。即使存在Excel的子目录 Logs 程序文件目录,它也很可能是写保护的。您的批处理代码不应该依赖于启动批处理文件时当前工作目录的任何内容。

Jeeped发布了4个解决方案中的两个。我的答案包含两个,如果修复了 Logs 目录的路径,最后一个解决方案最简单。

  1. ThisWorkbook.Path作为带有双引号的参数传递给批处理文件,并从批处理文件中引用。

    %SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>"%~1\Logs\%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt"
    
  2. 批处理文件中使用了命令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
    
  3. 批处理文件中使用了命令pushdpopd

    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提供,此处已添加完整性。

  4. 为目录日志中的文本文件指定了完整路径和名称。

    %SystemRoot%\System32\ping.exe -n 1 **EXAMPLE** >>"Path to Logs directory\%date:~-4,4%%date:~-10,2%%date:~-7,2%_Test.txt"