【发布时间】:2017-10-25 04:14:33
【问题描述】:
之前从未编写过批处理脚本,所以我正在学习中,但是...
我正在尝试创建一个脚本来自动映射网络驱动器。我包含了一个if exist 语句来确定该文件夹是否存在。但它一直退出if statement,就好像该文件夹不存在一样,即使它存在。当我单独运行该命令时,它可以工作(例如if exist \\domain\folder\desired_folder (echo true) else (echo false) 将回显真)。似乎它通过if statements 并直接进入else statement
这是我遇到问题的代码,它应该进入第一个 if statement 并映射驱动器...任何帮助将不胜感激。
REM define %A and %B
SET totalname="net user %USERNAME% /domain | FIND /i "Full Name""
FOR /f "tokens=3-4 delims=, " %%A IN ('%totalname%') DO SET drivename=%%A_%%B
REM check if I drive folder exists
if exist "\\domain\folder\%%A_%%B" (
REM delete current I drive
REM map I drive
net use i: /delete
net use i: \\domain\folder\%drivename% /P:YES
) else if exist \\domain\folder\%USERNAME% (
net use i: /delete
net use i: \\domain\folder\%USERNAME% /P:YES
) else (
echo ERROR: File Not Found
echo ERROR: Unable to map I drive
REM for debugging purposes: %username% & %drivename% echo the desired result
echo username %USERNAME%
echo a_b %drivename%
pause
exit
)
【问题讨论】:
-
您的代码不完整,您没有显示
%%A和%%B的来源。请提供minimal reproducible example!也许问题与缺少delayed expansion 有关。还要将路径放在""之间以避免在它们包含空格或其他特殊字符时出现问题... -
我正在使用以下命令来定义
%A和%BSET totalname="net user %USERNAME% /domain | FIND /i "Full Name""和FOR /f "tokens=3-4 delims=, " %%A IN ('%totalname%') DO SET drivename=%%A_%%B -
@aschipfl 谢谢,我添加了我得到
%A和%B的位置,并且在我试图获取的路径中没有空格或特殊字符,但我会添加“”来查看如果它有所作为
标签: batch-file if-statement exists