“如何检查”;或等同于;在windows批处理文件中
我是Windows批处理文件的新手,已经用这个脚本进行了8个多小时的实验。。但是没有运气 这是我的密码“如何检查”;或等同于;在windows批处理文件中,windows,batch-file,Windows,Batch File,我是Windows批处理文件的新手,已经用这个脚本进行了8个多小时的实验。。但是没有运气 这是我的密码 @echo off setlocal ENABLEDELAYEDEXPANSION FOR %%f IN (*.*) DO ( echo %%f echo %%~xf IF %%~xf==".xml" |= ".java" ( echo file needed ) ELSE( echo file not needed del %%f
@echo off
setlocal ENABLEDELAYEDEXPANSION
FOR %%f IN (*.*) DO (
echo %%f
echo %%~xf
IF %%~xf==".xml" |= ".java" (
echo file needed
) ELSE(
echo file not needed
del %%f
)
)
1) 我不能上班;获取“|在此时是意外的。”错误
2) 如何使此文件夹下的所有文件和子文件夹都能正常工作
3) 我还尝试了以下方法:
@echo off
setlocal ENABLEDELAYEDEXPANSION
FOR %%f IN (*.*) DO (
set todel=yes
echo %%~xf
echo todel=%todel%
IF %%~xf==".xml" (
todel=no
)
IF %%~xf==".java" (
todel=no
)
echo todel=%todel%
IF %todel%=="yes" (
del %%f
)
)
托德尔总是空的。我想我不能在循环中这样设置它
感谢您的帮助。谢谢 在这段代码中,可能有一种更好的方法可以有效地执行您正在执行的操作,但这里有一个基本结构,可以帮助您更好地理解cmd.exe是如何执行此操作的
@Echo关闭
对于(*.*)中的%%A,请执行以下操作(
如果/I不是“%%~xA”=>.xml”(
如果/I不是“%%~xA”==”.java”(
Echo%%~xA文件不需要
Echo Del%%A
)否则(
需要Echo.java文件
)
)否则(
需要Echo.xml文件
)
)
超时-1
如果您真的想让脚本删除文件,而不是只显示delete命令,请将第6行上的
Echo Del%%A
更改为Del%%A
。另一个选项是使用DIR
命令并将其传输到FINDSTR
命令,以仅列出需要删除的文件
FOR /F "DELIMS=" %%G IN (`dir /b /s *.* ^|findstr /E /V ".xml .java"`) DO del "%%G"
如果阅读
if
命令的帮助文件,可能会有所帮助。在命令提示下键入IF/?
。第二组代码的问题是您位于需要使用延迟扩展的代码块中。您必须启用延迟扩展,然后用感叹号而不是百分号引用变量。IF命令还进行字符串比较。如果你在比较的一边有引语,它们一定在另一边。嗨,Squashman,谢谢你的回复。但是我不能完全理解你在说什么。你能把你的话译成代码来显示我遗漏了什么吗?用延迟扩展引用你的变量:echo todel=!托德尔
并在字符串比较的两侧使用引号:如果“%%~xf”==”.xml“
这很有效。如何使此代码也适用于子曲面?蒂亚@用户1164061,通过在命令提示下键入for/?
来阅读for
命令的帮助。你应该看到一个对你有帮助的选项。