Пакетный файл: удаление префиксов имени файла на основе количества введенных символов - PullRequest
0 голосов
/ 28 января 2019

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

например.Переименуйте «1 File1.txt» и «1 File2.txt» в File1.txt & File2.txt соответственно.Проблема в том, что длина префикса может варьироваться.Вот код, который у меня есть:

@echo off
Set /p Prefix = Enter the prefix to eliminate:
rename "%Prefix%*.txt" "//*.txt"

Есть ли способ сделать количество слешей (символов для удаления) эквивалентным количеству символов, введенных пользователем?Или другой способ достичь того же?- все файлы с одинаковым префиксом (в данном случае префикс просто «1»

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Ответ, предоставленный Мофи в комментариях, именно то, что я ищу, спасибо!Общий разделитель - это пробел, поэтому код отлично работает.

for /F "eol=| delims=" %%A in ('dir "* *.txt" /A-D-H /B 2^>nul') do for /F "eol=| tokens=1*" %%B in ("%%A") do ren "%%A" "%%C"
0 голосов
/ 28 января 2019

Если вы хотите удалить префикс автоматически, используя файлы примеров 1 file1.txt 2 file2txt:

@echo off
set /p "input=Enter Prefix to search: "
for /f %%a in ('dir /b /a-d %input%*.txt') do (
   for /f "tokens=1,*" %%i in (%%a) do if not "%%i"=="" if not "%%j"=="" echo move "%%a" "%%j"
)

Он предложит пользователю ввести префикс для поиска, то есть 1, а затем выполнитеискать что-нибудь, содержащее 1*.txt и переименовывать его без первого разделителя.Таким образом, даже если пользователь добавляет 255 в качестве префикса, он будет искать что-нибудь 255*.txt (Обратите внимание, что в моей команде set нет пробелов до или после моего =.

Этот пример просто отобразитПереместите команду и не перемещайте файлы. Если вы хотите выполнить текущую задачу, удалите команду echo из последнего цикла for.

Имейте в виду, что если файл называется 1 and file1.txt, он будетпереименуйте файл в and file1.txt из-за tokens=1,* Кроме того, мы запускаем его только для файлов, содержащих пробелы, как в ваших примерах, а не _ - и т. д., но при необходимости их можно изменить.

Наконец, вы также можете автоматически переименовать все файлы без запроса пользователя, например

@echo off
for /f %%a in ('dir /b /a-d *.txt') do (
   for /f "tokens=1,*" %%i in (%%a) do if not "%%i"=="" if not "%%j"=="" echo move "%%a" "%%j"
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...