Ik heb een bestand zoals AAA_a001.jpg
, BBB_a002.jpg
, CCC_a003.jpg
in Windows 7
en ik probeer batch te gebruiken om deze bestanden te hernoemen naar a001_AAA.jpg
, a002_BBB.jpg
, a003_CCC.jpg
.
Gewoon om de inhoud te wisselen tussen _
.
Ik ben al een tijdje aan het zoeken, maar weet nog steeds niet hoe ik dit moet doen.
Kan iemand helpen?
Bedankt.
Antwoord 1, autoriteit 100%
@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
Opmerking: de naam wordt gesplitst bij de eerste keer dat _
voorkomt. Als een bestand de naam “part1_part2_part3.jpg” heeft, wordt het hernoemd naar “part2_part3_part1.jpg”
Antwoord 2, autoriteit 96%
Gebruik REN
-opdracht
REN
is voor rename
ren ( where the file is located ) ( the new name )
voorbeeld
ren C:\Users\&username%\Desktop\aaa.txt bbb.txt
het verandert aaa.txt in bbb.txt
Uw code is:
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
en ga zo maar door
IT WILL NOT WORK IF THERE IS SPACES!
Hopelijk helpt het 😀
Antwoord 3, autoriteit 70%
zoals Itsproinc zei, de opdracht REN
werkt!
maar als uw bestandspad/naam spaties bevat, gebruik dan aanhalingstekens ” “
voorbeeld:
ren C:\Users\&username%\Desktop\my file.txt not my file.txt
voeg ” ” toe
ren "C:\Users\&username%\Desktop\my file.txt" "not my file.txt"
Ik hoop dat het helpt
Antwoord 4, Autoriteit 10%
Ik neem aan dat u de lengte van het deel kent vóór de _
en na de onderstrepingsteken, evenals de extensie. Als u het niet complexer bent dan een eenvoudige substring.
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
)
Ik kwam gewoon met dit script, en ik heb het niet getest. Uitchecken dit en dat voor meer informatie.
Als u wilt veronderstellen, weet u niet de posities van de _
en de lengtes en de extensie, ik denk dat u iets mee kunt doen voor loops om de index van de _
, Dan de laatste index van de .
, wikkel het in een goto
Ding en laat het werken. Als je bereid bent om door die problemen te gaan, zou ik voorstellen dat je WindowsPowershell (of Cygwin) tenminste (voor je eigen sake) gebruikt of een meer geavanceerde scripttaal installeert (denk aan Python / Perl) manier.
Antwoord 5
I Hernoem in code
echo off
setlocal EnableDelayedExpansion
for %%a in (*.txt) do (
REM echo %%a
set x=%%a
set mes=!x:~17,3!
if !mes!==JAN (
set mes=01
)
if !mes!==ENE (
set mes=01
)
if !mes!==FEB (
set mes=02
)
if !mes!==MAR (
set mes=03
)
if !mes!==APR (
set mes=04
)
if !mes!==MAY (
set mes=05
)
if !mes!==JUN (
set mes=06
)
if !mes!==JUL (
set mes=07
)
if !mes!==AUG (
set mes=08
)
if !mes!==SEP (
set mes=09
)
if !mes!==OCT (
set mes=10
)
if !mes!==NOV (
set mes=11
)
if !mes!==DEC (
set mes=12
)
ren %%a !x:~20,4!!mes!!x:~15,2!.txt
echo !x:~20,4!!mes!!x:~15,2!.txt
)
Antwoord 6
De Powershell Way werkt voor mij en gemakkelijker te begrijpen en te veranderen. Heb echter fouten als rename-item : Source and destination path must be different
totdat ik het een beetje veranderd.
Om alleen bestanden van de map te hernoemen:
dir | Waar-object {$ .Name -Match ‘vervanging’} | RenoN-Item -NEWName {$ .Name -replace ‘vervanging’, ‘mynewtext’}
Om bestanden van de map- en submappen opnieuw te noemen, recursief:
Get-Childitem -Recurse | Waar-object {$ .Name -Match ‘.core.’} | Rename-Item -NEWName {$ .Name -replace ‘.core.’, ‘. Kader.’ }
Antwoord 7
Ik vond deze oplossing via PowerShell:
dir | rename-item -NewName {$_.name -replace "replaceME","MyNewTxt"}
Hiermee wordt onderdelen van alle bestanden hernoem in de huidige map.