如果批处理语句和应用程序不再被识别
If statement in batch and app not recognized anymore
我尝试访问存储在服务器上的一些 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 () 语句有误?
PATH 是由 Windows 定义的环境变量,包含命令处理器应在其中搜索具有环境变量 [= 中列出的文件扩展名的可执行文件或脚本的目录30=]路径。 运行 在新的命令提示符 window set path
或 set
中获取预定义的环境变量及其当前值。
您的批号包含:
set path=Z:\
这会覆盖 Windows 定义的 PATH 的值,因此命令处理器无法再找到 net.exe
,因为它不在当前目录或驱动器 Z:
.
的根目录
为环境变量使用不同的名称,Z:\
被分配为值。
对于 net 的两次出现,最好 另外 使用
%SystemRoot%\System32\net.exe
这将避免命令处理器在当前目录和 PATH 的所有目录中搜索 net.*
,直到找到具有列出的文件扩展名的文件在 PATHEXT.
问题出在您的路径语句(脚本的第三行)。
看来您误解了该命令的作用。 "path" 没有设置你的当前目录。它设置将搜索程序的目录列表。
如果您想将当前目录设置为 z:,只需说
z:
或者,如果我理解错了,你也想在 Z: 上搜索程序,那么说
set path=z:;%path%
它将 Z: 添加到您的路径中。
您告诉计算机只在 Z: 中查找程序。因此,它找不到 net(或许多其他程序)。
我尝试访问存储在服务器上的一些 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 () 语句有误?
PATH 是由 Windows 定义的环境变量,包含命令处理器应在其中搜索具有环境变量 [= 中列出的文件扩展名的可执行文件或脚本的目录30=]路径。 运行 在新的命令提示符 window set path
或 set
中获取预定义的环境变量及其当前值。
您的批号包含:
set path=Z:\
这会覆盖 Windows 定义的 PATH 的值,因此命令处理器无法再找到 net.exe
,因为它不在当前目录或驱动器 Z:
.
为环境变量使用不同的名称,Z:\
被分配为值。
对于 net 的两次出现,最好 另外 使用
%SystemRoot%\System32\net.exe
这将避免命令处理器在当前目录和 PATH 的所有目录中搜索 net.*
,直到找到具有列出的文件扩展名的文件在 PATHEXT.
问题出在您的路径语句(脚本的第三行)。
看来您误解了该命令的作用。 "path" 没有设置你的当前目录。它设置将搜索程序的目录列表。
如果您想将当前目录设置为 z:,只需说
z:
或者,如果我理解错了,你也想在 Z: 上搜索程序,那么说
set path=z:;%path%
它将 Z: 添加到您的路径中。
您告诉计算机只在 Z: 中查找程序。因此,它找不到 net(或许多其他程序)。