0

我尝试访问存储在服务器上的一些 Excel 数据并将这些文件复制到另一台服务器;目标路径应与文件名不同。这是我的代码:

setlocal enabledelayedexpansion
net use Z: \\10.0.0.1\Statistiques
set path=Z:\
set year=%date:~10,4%
set month=%date:~4,2%
set day=%date:~7,2%
echo %date%
for /f "delims=" %%a in ('dir *.xlsx /b /a-d "%path%" ') do (
    set "name=%%~na"
    set folder=Empty
    if "!name!"=="!name:Client1=!" (
        set folder=Client1
    )
    if "!name!"=="!name:Client2=!" (
        set folder=Client2
    )
    copy "%path%%%a" "\\10.0.0.2\Documents\Statistiques\!folder!\%year%%month%%day%_!name!%%~xa"
)
net use Z: /delete

我的问题是最后一个'net' is not recognized as an internal or external command, operable program or batch file.

在第一次网络使用时,驱动器正确安装;文件已正确复制,但是当我要删除驱动器时出现此错误。

可能是我的 if () 语句中的错误?

4

2 回答 2

2

PATH是由 Windows 定义的环境变量,包含命令处理器应在其中搜索具有环境变量PATHEXT中列出的文件扩展名的可执行文件或脚本的目录。在新的命令提示符窗口中运行,set path或者只是set为了让预定义的环境变量与它们的当前值一起显示。

您的批处理代码包含:

set path=Z:\

这会覆盖 Windows 定义的PATH的值,因此命令处理器无法再找到net.exe,因为它不在当前目录或驱动器的根目录中Z:

Z:\为分配为值的环境变量使用不同的名称。

最好另外使用两次net

%SystemRoot%\System32\net.exe

这将避免需要net.*通过命令处理器在当前目录和PATH的所有目录中搜索,直到找到具有PATHEXT中列出的文件扩展名的文件。

于 2015-12-29T12:16:16.497 回答
1

问题是您的路径语句(脚本的第三行)。

看起来您误解了该命令的作用。“路径”不设置您的当前目录。它设置将搜索程序的目录列表。

如果要将当前目录设置为 z:,只需说 z:

或者,如果我误解了,并且您也想在 Z: 上搜索程序,那么请说出 set path=z:;%path% 哪个将 Z: 添加到您的路径中。

您告诉计算机只在 Z: 中查找程序。因此,它找不到网络(或许多其他程序)。

于 2015-12-29T12:31:22.913 回答