Post by EffixDer var vidst lige en trykfejl i mit eksempel
C:\files\abcd\efg\hijklm
C:\files\bcd\afg\ijklme
[...]
Post by EffixEksempler på de faktiske stier og hvordan de skal se ud bagefter
1. mappe
c:\files\0094\638\5331220
'a'=0 , 'e'=6, 'h'=5
c:\files\094\038\3312206
2.mappe
c:\files\5709\576\983520
'a'=5 , 'e'=5, 'h'=9
c:\files\705\576\835205
^
(slåfejl, skulle have været 709, ikke?)
Hvis nu du får alle mappenavnene ind i en fil, lad os kalde den
mappe.txt (måske "DIR /aa" kan bruges til at lave listen?):
= = =
C:\files\abcd\efg\hijklm
c:\files\0094\638\5331220
c:\files\5709\576\983520
= = =
Så kan du omforme filen til kommandoer der omddøber med et lille
program, omform.pl:
= = =
#!/usr/bin/perl
use strict;
use warnings;
while (my $line=<>) {
if ($line=~/^(\w:\\files)\\(\w)(\w\w\w)\\(\w)(\w\w)\\(\w)(\w+)$/i) {
chomp $line;
my ($start, $a, $bcd, $e, $fg, $h, $resten)=($1, $2, $3, $4, $5, $6, $7);
print "REM Konverterer mappen $line til $start\\$bcd\\$a$fg\\$resten$e\n";
print "mkdir $start\\$bcd\n";
print "mkdir $start\\$bcd\\$a$fg\n";
print "move $line $start\\$bcd\\$a$fg\\$resten$e\n";
print "rmdir $start\\$a$bcd\\$e$fg\n";
print "rmdir $start\\$a$bcd\n\n";
}
else {
print STDERR "Forstod ikke linien: $line";
}
}
= = =
Kører du programmet på mappe.txt, ser det således ud:
= = =
$ perl.exe omform.pl mappe.txt
REM Konverterer mappen C:\files\abcd\efg\hijklm til C:\files\bcd\afg\ijklme
mkdir C:\files\bcd
mkdir C:\files\bcd\afg
move C:\files\abcd\efg\hijklm C:\files\bcd\afg\ijklme
rmdir C:\files\abcd\efg
rmdir C:\files\abcd
REM Konverterer mappen c:\files\0094\638\5331220 til c:\files\094\038\3312206
mkdir c:\files\094
mkdir c:\files\094\038
move c:\files\0094\638\5331220 c:\files\094\038\3312206
rmdir c:\files\0094\638
rmdir c:\files\0094
REM Konverterer mappen c:\files\5709\576\983520 til c:\files\709\576\835205
mkdir c:\files\709
mkdir c:\files\709\576
move c:\files\5709\576\983520 c:\files\709\576\835205
rmdir c:\files\5709\576
rmdir c:\files\5709
= = =
Når uddata ser rigtigt ud, kan du smide det ned i en bat-fil og køre
den:
= = =
$ perl.exe omform.pl mappe.txt > flyt.bat
$ flyt.bat
= = =
Et par bemærkninger:
* Jeg går ud fra at du bruger Windows, med de der stier. Jeg bruger
ikke Windows, så der findes muligvis nemmere måder at oprette og
nedlægge et mappe-hierarki på end de kald til mkdir og rmdir
programmet laver.
* Programmet er skrevet i Perl; hvis du ikke har Perl installeret kan
du (skrive programmet om til et andet sprog, eller) hente og
installere Perl herfra: http://strawberryperl.com/
* Jeg har prøvet at skrive programmet så det er nemt at rette i det der
kommer ud, snarere end at gøre det kort, så hvis du f.eks. ikke vil
slette de gamle mapper burde det være rimeligt nemt at gennemskue
hvordan du tilpasser det.
* Brugen af dette er på eget ansvar - tag backup først :-)
Mvh.
Adam
--
"Omvejviser" Adam Sjøgren
***@koldfront.dk