2014-12-04 3 views
0

У меня есть папка с файлами, которые названы так:пакетный файл, чтобы найти файл с именем заканчивая уникальным номером

abc_123_1234567.txt 

Как я могу написать Windows7 пакетный файл, который находит файл в папке, которая соответствует последнему набору чисел (т.е. 1234567).

Итак, вызов пакетного файла: mybatchfile.bat 1234567 возвращает вышеуказанный файл. Обратите внимание, что номер уникален и поэтому возвращает только один файл.

ответ

0

mybatchfile.bat содержание:

dir /b *%1*

или

dir /b *_%1.txt

+0

Как я могу поместить результат в переменную, так что я могу использовать его в дальнейшем в пакетный файл программы –

+0

'реж/б * _% 1.txt> tmp1' – i486

+0

' установить/р MyVar = i486

0

Главная рутина

@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir\t w o" 
PUSHD "%sourcedir%" 
CALL c:\106x\q27293854a.bat 1234563 
popd 
ECHO %ERRORLEVEL% filefound=%filefound% 
GOTO :EOF 

Где 1234563 ваша цель имя
Примечание: вам необходимо изменить настройку sourcedir в соответствии с вашими обстоятельствами. Этот конкретный параметр подходит для моей системы.
c:\106x\q27293854a.bat - это имя batchname - имя не имеет значения (подходит для моей системы), но может быть просто q27293854a, если файл установлен в каталоге в path.

Вызывается партия c:\106x\q27293854a.bat

@ECHO OFF 
SET "filefound=" 
FOR %%a IN (*_%1.*) DO IF DEFINED filefound (SET "filefound=Error - multiple files found"&EXIT /b 8) else (set "filefound=%%~fa") 
IF NOT DEFINED filefound EXIT /b 4 
EXIT /b 0 

Эта процедура установит filefound либо полное имя файла, найденного или ничего, если он не найден или строку ошибки, если более чем один матч найден.

ERRORLEVEL также установлен в 0 для штрафа - найдено 1, 4 для missing и 8 для multiple match found.

Смежные вопросы