объявление 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
включено.