Batch file 如何在windows批处理脚本中比较文件格式
我有一个包含.xml、.css、.js、.jsp、.java等文件名的列表。我想要一个代码,它只允许您在该文件具有.js或.jsp或.java扩展名时执行函数。我不知道如何检查if语句中的多重条件。这就是为什么添加as或..请帮助我..谢谢Batch file 如何在windows批处理脚本中比较文件格式,batch-file,batch-processing,batch-updates,Batch File,Batch Processing,Batch Updates,我有一个包含.xml、.css、.js、.jsp、.java等文件名的列表。我想要一个代码,它只允许您在该文件具有.js或.jsp或.java扩展名时执行函数。我不知道如何检查if语句中的多重条件。这就是为什么添加as或..请帮助我..谢谢 FOR /F "delims=#" %%A in (demo.txt) do ( IF [/I] %%~xA==".js" OR %%~xA==".css" OR %%~xA==".java" ( echo correct
FOR /F "delims=#" %%A in (demo.txt) do (
IF [/I] %%~xA==".js" OR %%~xA==".css" OR %%~xA==".java"
(
echo correct format
)
ELSE
(
ECHO incorrect format
)
)
创建一个包含所有有效扩展名列表的变量。请确保在末尾添加一个额外的点,以便所有扩展都由点包围。然后,对于每个值,尝试在列表上搜索并替换,将找到的扩展名(加点)替换为零。如果结果与原始列表不同,则扩展名有效
@echo off
setlocal enableDelayedExpansion
set "formats=.css.js.jsp.java."
for /f "delims=#" %%A in (demo.txt) do (
if "!formats:%%~xA.=!" neq "!formats!" (
echo %%~xA is correct format
) else (
echo %%~xA is incorrect format
)
)
有关实现或逻辑的其他方法,请参阅。创建一个包含所有有效扩展名列表的变量。请确保在末尾添加一个额外的点,以便所有扩展都由点包围。然后,对于每个值,尝试在列表上搜索并替换,将找到的扩展名(加点)替换为零。如果结果与原始列表不同,则扩展名有效
@echo off
setlocal enableDelayedExpansion
set "formats=.css.js.jsp.java."
for /f "delims=#" %%A in (demo.txt) do (
if "!formats:%%~xA.=!" neq "!formats!" (
echo %%~xA is correct format
) else (
echo %%~xA is incorrect format
)
)
setlocal enableDelayedExpansion
FOR /F "delims=#" %%A in (demo.txt) do (
set "format=incorect"
for %%E in (.js;.java;.jsp;.css) do (
if "%%~xA" == "%%~E" (
set "format=correct"
)
)
if "!format!" equ "correct" (
echo correct format
) else (
echo incorrect format
)
)
endlocal
有关实现或逻辑的其他方法,请参阅。创建一个包含所有有效扩展名列表的变量。请确保在末尾添加一个额外的点,以便所有扩展都由点包围。然后,对于每个值,尝试在列表上搜索并替换,将找到的扩展名(加点)替换为零。如果结果与原始列表不同,则扩展名有效
@echo off
setlocal enableDelayedExpansion
set "formats=.css.js.jsp.java."
for /f "delims=#" %%A in (demo.txt) do (
if "!formats:%%~xA.=!" neq "!formats!" (
echo %%~xA is correct format
) else (
echo %%~xA is incorrect format
)
)
setlocal enableDelayedExpansion
FOR /F "delims=#" %%A in (demo.txt) do (
set "format=incorect"
for %%E in (.js;.java;.jsp;.css) do (
if "%%~xA" == "%%~E" (
set "format=correct"
)
)
if "!format!" equ "correct" (
echo correct format
) else (
echo incorrect format
)
)
endlocal
有关实现或逻辑的其他方法,请参阅。创建一个包含所有有效扩展名列表的变量。请确保在末尾添加一个额外的点,以便所有扩展都由点包围。然后,对于每个值,尝试在列表上搜索并替换,将找到的扩展名(加点)替换为零。如果结果与原始列表不同,则扩展名有效
@echo off
setlocal enableDelayedExpansion
set "formats=.css.js.jsp.java."
for /f "delims=#" %%A in (demo.txt) do (
if "!formats:%%~xA.=!" neq "!formats!" (
echo %%~xA is correct format
) else (
echo %%~xA is incorrect format
)
)
setlocal enableDelayedExpansion
FOR /F "delims=#" %%A in (demo.txt) do (
set "format=incorect"
for %%E in (.js;.java;.jsp;.css) do (
if "%%~xA" == "%%~E" (
set "format=correct"
)
)
if "!format!" equ "correct" (
echo correct format
) else (
echo incorrect format
)
)
endlocal
有关实现或逻辑的其他方法,请参阅。If demo.txt中的文件列表,如OP所示
setlocal enableDelayedExpansion
FOR /F "delims=#" %%A in (demo.txt) do (
set "format=incorect"
for %%E in (.js;.java;.jsp;.css) do (
if "%%~xA" == "%%~E" (
set "format=correct"
)
)
if "!format!" equ "correct" (
echo correct format
) else (
echo incorrect format
)
)
endlocal
for /F "tokens=*" %%f in ('type demo.txt ^| findstr /i /e ".js .java .jsp"') do (
rem here what needs to be done
echo %%f
)
如果文件位于目录中,则将
键入demo.txt
替换为目录/b..
调整要处理的目录。如果文件列表位于demo.txt中,如OP所示
for /F "tokens=*" %%f in ('type demo.txt ^| findstr /i /e ".js .java .jsp"') do (
rem here what needs to be done
echo %%f
)
如果文件位于目录中,则将
键入demo.txt
替换为目录/b..
调整要处理的目录。如果文件列表位于demo.txt中,如OP所示
for /F "tokens=*" %%f in ('type demo.txt ^| findstr /i /e ".js .java .jsp"') do (
rem here what needs to be done
echo %%f
)
如果文件位于目录中,则将
键入demo.txt
替换为目录/b..
调整要处理的目录。如果文件列表位于demo.txt中,如OP所示
for /F "tokens=*" %%f in ('type demo.txt ^| findstr /i /e ".js .java .jsp"') do (
rem here what needs to be done
echo %%f
)
如果目录中有文件,请将键入demo.txt
替换为dir/b….
调整目录以进行处理。尝试以下操作:
@ECHO OFF &SETLOCAL
for /f "delims=#" %%a in (demo.txt) do (
set "flag="
if /i "%%~xa"==".js" set "flag=true"
if /i "%%~xa"==".css" set "flag=true"
if /i "%%~xa"==".java" set "flag=true"
if defined flag (echo %%~xa is valid) else echo %%~xa is not valid
)
试试这个:
@ECHO OFF &SETLOCAL
for /f "delims=#" %%a in (demo.txt) do (
set "flag="
if /i "%%~xa"==".js" set "flag=true"
if /i "%%~xa"==".css" set "flag=true"
if /i "%%~xa"==".java" set "flag=true"
if defined flag (echo %%~xa is valid) else echo %%~xa is not valid
)
试试这个:
@ECHO OFF &SETLOCAL
for /f "delims=#" %%a in (demo.txt) do (
set "flag="
if /i "%%~xa"==".js" set "flag=true"
if /i "%%~xa"==".css" set "flag=true"
if /i "%%~xa"==".java" set "flag=true"
if defined flag (echo %%~xa is valid) else echo %%~xa is not valid
)
试试这个:
@ECHO OFF &SETLOCAL
for /f "delims=#" %%a in (demo.txt) do (
set "flag="
if /i "%%~xa"==".js" set "flag=true"
if /i "%%~xa"==".css" set "flag=true"
if /i "%%~xa"==".java" set "flag=true"
if defined flag (echo %%~xa is valid) else echo %%~xa is not valid
)
比我的尝试更简单。+1非常感谢你…你的代码运行得非常完美。。非常感谢:)@user2918831-如果答案完全回答了你的问题,不要忘记接受你认为最有用的答案。只需单击anser左上角的复选标记。这一行动让其他人知道问题已经得到了回答,给你2个声誉点,给回答者15个代表点。每个问题只能接受一个答案。一旦你达到15个代表点,你就可以对任何你认为有用的答案进行投票,包括对其他人问题的答案。比我的尝试更简单。+1非常感谢你……你的代码运行得非常完美。。非常感谢:)@user2918831-如果你认为最有用的答案完全回答了你的问题,不要忘记接受它。只需单击anser左上角的复选标记。这一行动让其他人知道问题已经得到了回答,给你2个声誉点,给回答者15个代表点。每个问题只能接受一个答案。一旦你达到15个代表点,你就可以对任何你认为有用的答案进行投票,包括对其他人问题的答案。比我的尝试更简单。+1非常感谢你……你的代码运行得非常完美。。非常感谢:)@user2918831-如果你认为最有用的答案完全回答了你的问题,不要忘记接受它。只需单击anser左上角的复选标记。这一行动让其他人知道问题已经得到了回答,给你2个声誉点,给回答者15个代表点。每个问题只能接受一个答案。一旦你达到15个代表点,你就可以对任何你认为有用的答案进行投票,包括对其他人问题的答案。比我的尝试更简单。+1非常感谢你……你的代码运行得非常完美。。非常感谢:)@user2918831-如果你认为最有用的答案完全回答了你的问题,不要忘记接受它。只需单击anser左上角的复选标记。这一行动让其他人知道问题已经得到了回答,给你2个声誉点,给回答者15个代表点。每个问题只能接受一个答案。一旦你达到15个代表点,你就可以对任何你认为有用的答案进行投票,包括对其他人问题的答案。你需要避开管道,
findstr/i/e/c:“jsp”/c:“java”…
No,/c:是不必要的。除非使用/c,否则文档状态空格将分隔多个子字符串。如果由于回显在末尾输出一个引号而失败。findstr/e说巧合应该在最后。所以没有对手,对不起。现在我看到您已经编辑了测试。新版本返回some.js您需要转义管道,findstr/i/e/c:“jsp”/c:“java”…
No,/c:不是必需的。除非使用/c,否则文档状态空格将分隔多个子字符串。如果由于回显在末尾输出一个引号而失败。findstr/e说巧合应该在最后。所以没有对手,对不起。现在我看到您已经编辑了测试。新版本返回some.js您需要转义管道,findstr/i/e/c:“jsp”/c:“java”…
No,/c:不是必需的。