2014-11-27 5 views
-1

У меня есть пакет файлов, указанных в следующем форматеПереименование файлов в одного формата в другой

STR1_xxxxxxxxxx_STR2.txt

Я хотел бы, чтобы удалить XXXXXXXXXX часть.

Это переименовать в

STR1_STR2.txt

UPDATE:

Для простоты рассмотрит str1 как случайную строку со случайной длиной, которые мы не знаем , Он может также включать символ «_».

STR2 - это строка, которую мы знаем.

xxxxxxxxxxxx - случайная строка с фиксированной длиной, это также часть, которую я хочу удалить.

+1

Отъезд следующим образом: http://stackoverflow.com/questions/17271586/rename-multiple-files-in- cmd – Vanest

+0

@ Vanest Спасибо, но это не делает вещи ... – Rein

+0

За обновление имя может быть STR1xxxxxxxxxxxxxx_STR2, no _ в нем? – sjoy

ответ

1

Test.bat

@echo off 
set file=STR1_xxxxxxxxxx_STR2.txt 
set file2=%file:*_=% 
for /f "delims=_" %%a in ("%file%") do set file1=%%a 
set file1=%file1%_%file2:*_=% 
ren %file% %file1% 

Попробуйте это. Поместите этот командный файл, где у вас есть текстовый файл.

ОБНОВЛЕНО

Теперь попробуйте эту

@echo off 
setlocal enabledelayedexpansion 
set file=STR1_2_xxxxxxxxxx_STR2.txt 
call :reverse %file% file1 
for /f "delims=_" %%a in ("%file1%") do set file2=%%a 
set file1=%file1:*_=% 
set file1=%file1:*_=% 
call :reverse %file1% file3 
call :reverse %file2% file4 
set file1=%file3%_%file4% 
set file1=%file1: =% 
ren %file% %file1% 
goto :eof 

:reverse 
set str=%~1 
set cnt=0 
:loop 
if "%str%" equ "" (
    goto :eof 
    ) 
set chr=!str:~0,1! 
set str=%str:~1% 
set %2=%chr%!%2! 
goto loop 
+0

Спасибо, но у нас есть "_" в STR1. – Rein

+0

Надеюсь, теперь это хорошо работает ... – Kumar

+0

@Kumar Можете ли вы объяснить свой код немного внизу ответа. Я бы хотел это лучше понять. Похоже, вы указываете, что имя файла всегда должно быть буквальным «STR1_2_xxxxxxxxxx_STR2.txt», но я предполагаю, что это действует как шаблон в некотором роде. Благодарю. – sjoy

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