Windows 无法比较通过bat文件声明为成功/失败状态的变量
我创建了一个bat文件,以查找在主文件中定义的文件夹列表中包含子文件夹的文件夹 脚本:Windows 无法比较通过bat文件声明为成功/失败状态的变量,windows,batch-file,command-line,cmd,command,Windows,Batch File,Command Line,Cmd,Command,我创建了一个bat文件,以查找在主文件中定义的文件夹列表中包含子文件夹的文件夹 脚本: @echo off REM SetLocal EnableDelayedExpansion for /F "delims=" %%a in (D:\Temp\A\folder_creation\FRONT_OFFICE_SERVER.txt) do ( pause echo %%a (echo %%a |find /I "\" > null && set COUNTER='SUB' ||
@echo off
REM SetLocal EnableDelayedExpansion
for /F "delims=" %%a in (D:\Temp\A\folder_creation\FRONT_OFFICE_SERVER.txt) do (
pause
echo %%a
(echo %%a |find /I "\" > null && set COUNTER='SUB' || set COUNTER='NO_SUB') >> abc.log
pause
SetLocal EnableDelayedExpansion
echo counter is !COUNTER!
pause
set SUB='SUB'
IF !COUNTER!=='%SUB%' (
echo %%a has a subfolder
pause
SET !COUNTER!=ABC
) ELSE (
echo %%a doesnt have a subfolder
pause
SET !COUNTER!=ABC
)
)
前台办公服务器.txt文件内容
ABC
DEF
ABC\DEF
ABC\GHI
TEMP
A
B\A
在这里,脚本运行并循环文本文件中提到的文件夹名称,并根据提供的验证进入循环。但每次循环进行时,它要么进入IF子句,要么进入else子句,而不是根据子文件夹的存在情况
我的意图是,如果子文件夹不存在,则在If子句下运行命令集,如果sbfolder存在,则在else部分运行命令
我觉得这是因为if验证,在这里我丢失了所用局部变量的单引号或双引号
有人能帮我一下吗?从昨天开始,这个小的悬而未决的东西已经完成了整个工作。下面是一个示例脚本,展示了一个更简单的思考过程:
@Echo Off
For /F "Delims=" %%I In (D:\Temp\A\folder_creation\FRONT_OFFICE_SERVER.txt) Do (
If "%%~nI" Equ "%%~I" (
Echo=[%%I] No Sub - run the set of commands
) Else (
Echo=[%%~I] Sub exists - run the part commands
)
)
Pause
希望对您有所帮助,以下是一个示例脚本,展示了一个更简单的思考过程:
@Echo Off
For /F "Delims=" %%I In (D:\Temp\A\folder_creation\FRONT_OFFICE_SERVER.txt) Do (
If "%%~nI" Equ "%%~I" (
Echo=[%%I] No Sub - run the set of commands
) Else (
Echo=[%%~I] Sub exists - run the part commands
)
)
Pause
希望能对您有所帮助,我们非常感谢您的早期回复,因为其余工作取决于上述问题的解决:(添加
echo IF!COUNTER!='%SUB%'
在set SUB='SUB'
之后立即添加echo IF!COUNTER!='%SUB%'
您可能会看到一些错误,可能是意想不到的,例如IF'SUB'='SUB'
@JosefZ我尝试过删除set SUB=SUB
中的引号,但没有成功:(非常感谢任何早期响应,因为其余工作取决于上述待解决问题:(添加echo IF!COUNTER!='%SUB%'
在set SUB='SUB'
之后立即添加echo IF!COUNTER!='%SUB%'
您可以看到一些错误,可能是意想不到的事情,例如IF'SUB'='SUB'
@JosefZ我尝试过删除set SUB=SUB
中的引号,但没有成功:(您能帮我解释一下使用“%%~nI”之间的区别吗
和“%%~I”
%%~I-展开%I,删除任何周围的引号(“),%%nI-仅将%I扩展为文件/文件夹名。在这种情况下,最后一个反斜杠后的所有内容都将被视为文件/文件夹名。逻辑是,如果展开时单词不同,则它必须是子文件夹。@user207517,请阅读for
命令的帮助。它对该命令进行了很好的解释。您能帮助解决usi之间的差异吗ng“%%~nI”
和“%%~I”
%%~I-展开%I,删除任何周围的引号(“),%%nI-仅将%I扩展为文件/文件夹名。在这种情况下,最后一个反斜杠后面的所有内容都将被视为文件/文件夹名。逻辑是,如果展开时单词不同,则它必须是子文件夹。@user207517,请阅读for
命令的帮助。该命令解释得很好。