16. august 2005 - 15:01
Der er
8 kommentarer og 1 løsning
batch til renaming af dirs.
Jeg har en masse dirs med filer som her: /dirA/dir1/ /dirA/dir2/ /dirB/dir1/ /dirC/dir1/ /dirC/dir2/ /dirC/dir3/ /dirC/dir4/ /dirD/dir1/ /dirE/dir1/ Disse biblioteker vil jeg gerne have renamed, så de ligger sådan her: /dirA - dir1/ /dirA - dir2/ /dirB - dir1/ /dirC - dir1/ /dirC - dir2/ /dirC - dir3/ /dirC - dir4/ /dirD - dir1/ /dirE - dir1/ Altså så der kun er biblioteker i roden, og ikke længere nede. Er der en der kan hjælpe mig med at trylle sådan en batch frem?
Annonceindlæg fra HP
16. august 2005 - 15:35
#1
Start > cmd > og skriv xcopy C:\dirA\dir1\*.* c:\dirA-dir1 /E /I og tryk enter Hvor c: skal være det drev hvor dine dir's er. Når den er færdig, trykker du F3, og den samme kommando kommer frem igen. Du kan nu bruge Backspace ind til 1 er væk, tryk på 2, tryk F3, backspace til 1 er væk, tryk 2 osv indtil du får xcopy C:\dirA\dir2\*.* c:\dirA-dir2 /E /I og tryk enter. Sådan bliver du ved indtil alle er kopieret, og efter du har checket at alle filer er på rette plads, kan du slette de gamle dir's.
16. august 2005 - 16:03
#2
Det er der jo ikke særlig meget batch over.
16. august 2005 - 19:50
#3
Man kunne bruge noget i stil med: @echo off for /F %%I in ('dir /B /AD') do call :HandleSub %%I goto :eof :HandleSub for /F %%A in ('dir /B /AD %1') do ( echo md "%1 - %%A" echo copy %1/%%A/* "%1 - %%A" ) Du putter det i en .bat fil og lægger den i roden af dit træ. Så kører du den fra en kommando-prompt så du kan se hvad der sker. Den bør så skrive (dvs skrive kommandoerne, ikke udføre dem): md "dirA - dir1" copy /dirA/dir1/* "dirA - dir1" Hvis det ser rigtigt ud sletter du de sidste to forekomster af ordet echo og kører det igen, så udfører den kommandoerne. Hvis du er modig kan du ændre copy til move, så vil den flytte filerne og ikke blot kopiere dem.
16. august 2005 - 21:59
#4
Den vil ikke tage dirs der har mellemrum i. f.eks: /dirC/dir 2/ Derudover melder den 'File Not Found' flere gange. :]
16. august 2005 - 22:33
#5
Denne burde også kunne tage dirs med mellemrum i navnet. for /F "tokens=*" %%I in ('dir /B /AD') do call :HandleSub "%%I" goto :eof :HandleSub for /F "tokens=*" %%A in ('dir /B /AD %1') do ( echo md "%~1 - %%A" echo copy "%~1/%%A/*" "%~1 - %%A" )
03. november 2010 - 17:41
#6
Hej Bertel. Mindes at jeg løste problemet, men kan ikke huske hvordan. Men dit svar fortjener ihvertfald point, så kan du ikke give mig et svar?
03. november 2010 - 22:32
#7
Jeg er ikke begyndt at samle på point
04. november 2010 - 22:20
#8
Men det ville være det rigtige at gøre.
23. september 2011 - 11:26
#9
Lukkes
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.