У меня есть некоторые файлы, такие как AAA_a001.jpg
, BBB_a002.jpg
, CCC_a003.jpg
в Windows 7.
и я пытаюсь использовать пакетное переименование этих файлов в a001_AAA.jpg
, a002_BBB.jpg
, a003_CCC.jpg
.
Просто чтобы поменять содержимое между _
.
Я долго искал, но так и не понял, как это сделать. Может ли кто-нибудь помочь? Спасибо.
Используйте команду REN
Ren
означает переименовать
.
ren ( where the file is located ) ( the new name )
пример
ren C:\Users\&username%\Desktop\aaa.txt bbb.txt
это изменит aaa.txt на bbb.txt
Ваш код будет :
ren (file located)AAA_a001.jpg a001.AAA.jpg
ren (file located)BBB_a002.jpg a002.BBB.jpg
ren (file located)CCC_a003.jpg a003.CCC.jpg
и так далее
IT WILL NOT WORK IF THERE IS SPACES!
Надеюсь, это поможет :D
@echo off
pushd "pathToYourFolder" || exit /b
for /f "eol=: delims=" %%F in ('dir /b /a-d *_*.jpg') do (
for /f "tokens=1* eol=_ delims=_" %%A in ("%%~nF") do ren "%%F" "%%~nB_%%A%%~xF"
)
popd
Примечание: Имя разбивается на части при первом появлении символа _
. Если файл имеет имя "part1_part2_part3.jpg", то он будет переименован в "part2_part3_part1.jpg"
Я предполагаю, что вы знаете длину части до _
и после подчеркивания, а также расширение. Если нет, то это может быть сложнее, чем простая подстрока.
cd C:\path\to\the\files
for /f %%a IN ('dir /b *.jpg') do (
set p=%a:~0,3%
set q=%a:~4,4%
set b=%p_%q.jpg
ren %a %b
)
Я только что придумал этот скрипт и не тестировал его. Посмотрите this и that для получения дополнительной информации.
Если вы хотите предположить, что вы не знаете позиции _
, длины и расширения, я думаю, вы могли бы сделать что-то с циклами for, чтобы проверить индекс _
, затем последний индекс .
, обернуть это в goto
и заставить это работать. Если вы готовы пойти на это, я бы посоветовал вам использовать WindowsPowerShell (или Cygwin), по крайней мере (для вашего же блага) или установить более продвинутый язык сценариев (подумайте о Python/Perl), в любом случае вы получите больше поддержки.