2016-12-22 5 views
-1

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

pp-sssss-iiii-12.0.111.22_31-i-P.0.16.1.1

Я хочу от имени только это (выход желаемого):

12.0.111.22_31

затем заменить . с 0 и удалите '_', чтобы я получил ниже

1200011102231

хорошо я попытался начать с чего-то вроде этого

cd %cd% 
for %%F in (*.txt) do echo %%~nxF >>1.txt 

, но я не знаю, как продолжить

редактировать код:

@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "sourcedir=C:\Users\moudiz\Desktop\new folder\tttt" 
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*.pbd" ' 
) DO (
FOR /f "tokens=4delims=-" %%d IN ("%%a") DO (
    SET "modname=%%d" 
    SET "modname=!modname:.=0!" 
    SET "modname=!modname:_=!" 
    ECHO %%a becomes !modname! 
) 
) 

GOTO :EOF 
pause 

имя файла

P-Script-LogFiles-1.0.33.33_123-IB-P.0.16.357.1.pbd

выход 100033033123

ответ

1

[Примечание: OP запоздало спросил первый символ имени будет предварять имя генерируется из оригинального поста, поэтому использование %%c ниже]

@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "sourcedir=U:\sourcedir" 
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*.txt" ' 
) DO (

echo File "%%a" 

FOR /f "tokens=1,4delims=-" %%c IN ("%%a") DO (
    SET "modname=%%d" 
    SET "modname=!modname:.=0!" 
    SET "modname=!modname:_=!" 
    ECHO %%a becomes %%c!modname! 
) 
pause 
) 

pause 

GOTO :EOF 

Вы бы необходимо изменить настройку sourcedir в соответствии с вашими обстоятельствами.

Использование delayedexpansion,! Var! относится к модифицированному значению переменной и set "var=!var:string=gnirts!" substitutes "gnirts" for "string" in var and assigns the result back to var`.

Теперь - совсем то, что вы хотите сделать с этим модифицированным результатом, вы не показываете - но догадываясь переименованием,

echo ren "%%a" "!modname!" 

должен быть доступен

предварять первый маркер, просто изменить tokens= к 1,4 *, чтобы выбрать первый и четвертый маркеры) - и изменить metavariable в for к %%c (в порядке, что %%d обработка остается такой же), а затем использовать %%c, который будет содержать часть оригинала имя файла перед первым -.

+0

Я хочу, чтобы результат находился в файле >> result.txt .. Я скопировал ваш пример, я разрешил этот '' dir/b/ad "% sourcedir% \ * .pbd" '', добавил' pause' и я запустил его, но он не работал – Moudiz

+0

Извините - «это не сработало» не дает много подсказок. Используя имя файла, который вы назначили, 'pp-sssss-iiii-12.0.111.22_31-iP.0.16.1.1.txt' (я добавил' .txt', так как ваш опубликованный код использует маску '* .txt'), это рутинное 'echo'ed 'pp-sssss-iiii-12.0.111.22_31-iP.0.16.1.1.txt становится 1200011102231", которое вам, по-вашему, хотелось. Я понятия не имею, где '* .pbd' входит в картину. – Magoo

+0

'.pbd' был связан со сценарием, который я делал. плохой пост в редактировании, как я скопировал ваш код, и точное имя файла в порядке? – Moudiz

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