[英]windows batch | for loop and dir command with parameter
工作命令-直接粘贴在命令外壳中:
for /f %a in ('dir /b /s ..\*') do @echo %~na | findstr transport_bb_*_*_* | sort
问题1)从.bat文件执行的同一命令导致错误:
| was unexpected at this time.
问题2)此外,希望上述.bat文件接受参数(目录):
for /f %a in ('dir /b /s %1\..\*') do @echo %~na | findstr transport_bb_*_*_* | sort
试过撇号,“重音符”,双精度百分数,使用SET将整个命令放在括号内,仍然无效。
帮助表示赞赏。
谢谢,巴特
广告1)在批处理文件中,您必须将%
-> %%
翻倍。 管道|
您将不得不替换为工作流程:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /F "delims=" %%A in ('dir /B /S ..\*') do (
echo %~nA
set "search_in_file=%%A"
findstr transport_bb_*_*_* !search_in_file! | sort
)
广告2)接受用户输入
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET "input=%~1"
SET "search_in_dir=!input!\*"
for /F "delims=" %%A in ('dir /B /S !search_in_dir!') do (
REM echo %%~nA
set "search_in_file=%%A"
REM ECHO findstr "transport_bb_*_*_*" "%search_in_file%"
findstr "transport_bb_*_*_*" "!search_in_file!"
IF ERRORLEVEL 1 (
ECHO "String NOT found in file !search_in_file!"
) ELSE (
ECHO ""String found in file !search_in_file!"
)
)
或更像您的脚本:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET "input=%~1"
SET "search_in_dir=!input!\*"
for /F "delims=" %%A in ('dir /B /S !search_in_dir!') do (
set "search_in_file=%%A"
findstr /M "transport_bb_*_*_*" "!search_in_file!" | sort
)
笔记:
其中findstr参数:
/M Prints only the filename if a file contains a match.
%~1
...接受第一个用户参数并将其扩展
!....!
现在,由于启用了SETLOCAL ENABLEDELAYEDEXPANSION
因此SETLOCAL ENABLEDELAYEDEXPANSION
了一个变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.