Discussion:
Et omdøbningsproblem
(for gammel til at besvare)
Effix
2010-07-29 15:29:41 UTC
Permalink
Jeg har et problem med en mappestruktur
Strukturen ser således ud:
C:\files\abcd\efg\hijklm
men den skal laves om til:
C:\files\bcd\fga\ijklme

'a' skal være det første tegn i undermappen 'efg' --> 'afg'
'e' skal være det sidste tegn i undermappen 'hijklm' --> 'hijklme'
'h' og h skal bare slettes.
Jeg har forsøgt at finde omdøbningsprogrammer men kan ingen finde der
kan klare det.
Så den sidste udvej er vel at skrive et lille program der kan klare
det. Jeg har stort set ingen erfaring med programmering så håber der
er nogen der kan pege mig i den rigtige retning.
Håber der er nogen der kan hjælpe mig
Mvh
Morten
Rado
2010-07-29 19:00:12 UTC
Permalink
On Thu, 29 Jul 2010 08:29:41 -0700 (PDT), Effix
Post by Effix
Jeg har et problem med en mappestruktur
C:\files\abcd\efg\hijklm
C:\files\bcd\fga\ijklme
'a' skal være det første tegn i undermappen 'efg' --> 'afg'
'e' skal være det sidste tegn i undermappen 'hijklm' --> 'hijklme'
'h' og h skal bare slettes.
Det er lidt sparsomme oplysninger du kommer med (og teksten stemmer
vist ikke helt overens med eksemplerne).

Er der tale om mange mappestrukturer (stier/paths) med samme antal
tegn i de forskellige mapper hvior der skal laves en absolut ændring?
F.ex:

C:\files\abcd\efg\hijklm
C:\files\netn\dvd\gkelle
C:\files\qede\aed\tuerrt

Der skal ændres absolut til f.ex.

C:\files\bcd\xfg\ijklmy
C:\files\etn\xvd\kelley
C:\files\ede\xed\tuerry

Eller er ændringerne relative, f.ex:

C:\files\abcd\efg\hijklm
C:\files\netn\dvd\gkelle
C:\files\qede\aed\tuerrt

Der skal ændres til f.ex.

C:\files\bcd\afg\ijklme
C:\files\etn\nvd\kelled
C:\files\ede\qed\tuerra
--
Rado
"Den genetiske kode minder ikke om software - den ER software,
blot mere avanceret end noget, vi nogensinde har fundet på."
- Bill Gates
Rado
2010-07-29 19:09:39 UTC
Permalink
Post by Effix
C:\files\abcd\efg\hijklm
C:\files\netn\dvd\gkelle
C:\files\qede\aed\tuerrt
Der skal ændres til f.ex.
C:\files\bcd\afg\ijklme
C:\files\etn\nvd\kelled
C:\files\ede\qed\tuerra
C:\files\abcd\efg\hijklm
C:\files\netn\dvd\gkelle
C:\files\qede\aed\tuerrt
Der skal ændres til f.ex.
C:\files\bcd\afg\ijklme
C:\files\etn\nvd\kelled
C:\files\ede\qed\uerra
--
Rado
"Den genetiske kode minder ikke om software - den ER software,
blot mere avanceret end noget, vi nogensinde har fundet på."
- Bill Gates
Rado
2010-07-29 19:14:05 UTC
Permalink
On Thu, 29 Jul 2010 21:00:12 +0200, Rado <***@fjernpost1.tele.dk>
wrote:

Og en gang til
Post by Effix
C:\files\abcd\efg\hijklm
C:\files\netn\dvd\gkelle
C:\files\qede\aed\tuerrt
Der skal ændres absolut til f.ex.
C:\files\bcd\xfg\ijklmy
C:\files\etn\xvd\kelley
C:\files\ede\xed\tuerry
C:\files\abcd\efg\hijklm
C:\files\netn\dvd\gkelle
C:\files\qede\aed\tuerrt
Der skal ændres absolut til f.ex.
C:\files\bcd\xfg\ijklmy
C:\files\etn\xvd\kelley
C:\files\ede\xed\uerrty
--
Rado
"Den genetiske kode minder ikke om software - den ER software,
blot mere avanceret end noget, vi nogensinde har fundet på."
- Bill Gates
Effix
2010-07-29 19:27:34 UTC
Permalink
Post by Rado
Og en gang til
Post by Effix
C:\files\abcd\efg\hijklm
C:\files\netn\dvd\gkelle
C:\files\qede\aed\tuerrt
Der skal ændres absolut til f.ex.
C:\files\bcd\xfg\ijklmy
C:\files\etn\xvd\kelley
C:\files\ede\xed\tuerry
C:\files\abcd\efg\hijklm
C:\files\netn\dvd\gkelle
C:\files\qede\aed\tuerrt
Der skal ændres absolut til f.ex.
C:\files\bcd\xfg\ijklmy
C:\files\etn\xvd\kelley
C:\files\ede\xed\uerrty
--
Rado
"Den genetiske kode minder ikke om software - den ER software,
blot mere avanceret end noget, vi nogensinde har fundet på."
 - Bill Gates
Hej Rado,
Tak fordi du tager dig tid til at svare mig.
Der var vidst lige en trykfejl i mit eksempel
Strukturen ser således ud:
C:\files\abcd\efg\hijklm
men den skal laves om til:
C:\files\bcd\afg\ijklme

Jeg giver lige et eksempel på hvordan to af de mappestrukturer jeg
har
ser ud nu og hvordan de skal se ud efter de er omdøbt som jeg ønsker.
Reference stien (eller hvad vi nu skal kalde den) C:\files\abcd\efg
\hijklm
Eksempler 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

osv.

Der er ca 200 mapper og hver mappe har altid samme antal tegn som vist
i eksemplet

Vh Morten
Rado
2010-07-29 20:03:09 UTC
Permalink
On Thu, 29 Jul 2010 12:27:34 -0700 (PDT), Effix
Post by Effix
Der var vidst lige en trykfejl i mit eksempel
C:\files\abcd\efg\hijklm
C:\files\bcd\afg\ijklme
Ja det mente jeg nok.
Post by Effix
Jeg giver lige et eksempel på hvordan to af de mappestrukturer jeg
har
ser ud nu og hvordan de skal se ud efter de er omdøbt som jeg ønsker.
Reference stien (eller hvad vi nu skal kalde den) C:\files\abcd\efg
\hijklm
Eksempler 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
OK, forstået. Er der tale om de samme ændringer (samme bogstaver/tal
der skal indsættet) i alle stierne (dvs. absolutte parametre)? Eller
er parametrene ('a' 'e' 'h') forskellige for hver sti, som i de to
eksempler her?
--
Rado
"Den genetiske kode minder ikke om software - den ER software,
blot mere avanceret end noget, vi nogensinde har fundet på."
- Bill Gates
Effix
2010-07-29 20:11:53 UTC
Permalink
Post by Rado
On Thu, 29 Jul 2010 12:27:34 -0700 (PDT), Effix
Post by Effix
Der var vidst lige en trykfejl i mit eksempel
C:\files\abcd\efg\hijklm
C:\files\bcd\afg\ijklme
Ja det mente jeg nok.
Post by Effix
Jeg giver lige et eksempel på hvordan to af de mappestrukturer jeg
har
ser ud nu og hvordan de skal se ud efter de er omdøbt som jeg ønsker.
Reference stien (eller hvad vi nu skal kalde den) C:\files\abcd\efg
\hijklm
Eksempler 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
OK, forstået. Er der tale om de samme ændringer (samme bogstaver/tal
der skal indsættet) i alle stierne (dvs. absolutte parametre)? Eller
er parametrene ('a' 'e' 'h') forskellige for hver sti, som i de to
eksempler her?
--
Rado
"Den genetiske kode minder ikke om software - den ER software,
blot mere avanceret end noget, vi nogensinde har fundet på."
 - Bill Gates
Parametrene er forskellige fra sti til sti

-morten
Rado
2010-07-29 20:40:21 UTC
Permalink
On Thu, 29 Jul 2010 13:11:53 -0700 (PDT), Effix
Post by Effix
Parametrene er forskellige fra sti til sti
OK, det gør det noget vanskeligere. Hvor henter du parametrene fra?
--
Rado
"Den genetiske kode minder ikke om software - den ER software,
blot mere avanceret end noget, vi nogensinde har fundet på."
- Bill Gates
Effix
2010-07-29 21:47:42 UTC
Permalink
Post by Rado
On Thu, 29 Jul 2010 13:11:53 -0700 (PDT), Effix
Post by Effix
Parametrene er forskellige fra sti til sti
OK, det gør det noget vanskeligere. Hvor henter du parametrene fra?
--
Rado
"Den genetiske kode minder ikke om software - den ER software,
blot mere avanceret end noget, vi nogensinde har fundet på."
 - Bill Gates
Parametrene a, e, og h er jo alle første tal i hver mappe.
Rado
2010-07-30 15:07:19 UTC
Permalink
On Thu, 29 Jul 2010 14:47:42 -0700 (PDT), Effix
Post by Effix
Post by Rado
On Thu, 29 Jul 2010 13:11:53 -0700 (PDT), Effix
Post by Effix
Parametrene er forskellige fra sti til sti
OK, det gør det noget vanskeligere. Hvor henter du parametrene fra?
Parametrene a, e, og h er jo alle første tal i hver mappe.
OK. Er der tale om en engangsprocedure eller noget der skal gentages
jævnligt? Hvis det er en engangsprocedure så vil det være betydeligt
lettere og hurtigere at omdøbe de 200 stier manuelt end at skrive et
program der kan gøre det, hvis du ikke har nogen erfaring med
programmering, og selv vil prøve at lave programmet. Du skal nok regne
med at bruge nogle måneder på at blive så øvet at du selv kan gøre
det. Men hvis du alligevel vil lære at programmere kan det
selvfølgelig være et godt øvelsesprojekt.

Det kan selvfølgelig tænkes at der findes et eller andet smart
scriptsprog der er egnet til det her, og som er let at gå til, men jeg
kender ikke umiddelbart noget. Og selv da vil jeg tro det er hurtigere
at omdøbe dem manuelt. Det burde faktisk kunne gøres på et par timer
eller mindre.
--
Rado
"Den genetiske kode minder ikke om software - den ER software,
blot mere avanceret end noget, vi nogensinde har fundet på."
- Bill Gates
Effix
2010-07-30 16:16:37 UTC
Permalink
Post by Rado
On Thu, 29 Jul 2010 14:47:42 -0700 (PDT), Effix
Post by Effix
Post by Rado
On Thu, 29 Jul 2010 13:11:53 -0700 (PDT), Effix
Post by Effix
Parametrene er forskellige fra sti til sti
OK, det gør det noget vanskeligere. Hvor henter du parametrene fra?
Parametrene a, e, og h er jo alle første tal i hver mappe.
OK. Er der tale om en engangsprocedure eller noget der skal gentages
jævnligt? Hvis det er en engangsprocedure så vil det være betydeligt
lettere og hurtigere at omdøbe de 200 stier manuelt end at skrive et
program der kan gøre det, hvis du ikke har nogen erfaring med
programmering, og selv vil prøve at lave programmet. Du skal nok regne
med at bruge nogle måneder på at blive så øvet at du selv kan gøre
det. Men hvis du alligevel vil lære at programmere kan det
selvfølgelig være et godt øvelsesprojekt.
Det kan selvfølgelig tænkes at der findes et eller andet smart
scriptsprog der er egnet til det her, og som er let at gå til, men jeg
kender ikke umiddelbart noget. Og selv da vil jeg tro det er hurtigere
at omdøbe dem manuelt. Det burde faktisk kunne gøres på et par timer
eller mindre.  
--
Rado
"Den genetiske kode minder ikke om software - den ER software,
blot mere avanceret end noget, vi nogensinde har fundet på."
 - Bill Gates
Problemet med mappestrukturen skyldes egentligt det program der
genererer mapperne. Den genererer mapperne ud fra stregkoder på CD'er
og det virker fint med europæiske stregkoder men med CD'er importeret
fra USA går der kage i det og så er det der skal laves om i
mappestrukturen.
Processen med at omdøbe manuelt var gået igang men den er jo død syg
så man tænker jo hurtigt om der ikke er andre løsninger der er bedre.
Desværre er det jo nok en opgave der lige er lidt for stor en bid for
mig at starte med, da det skal være gjort inden d.25.august... så det
er jo nok nemmeste og hurtigst at omdøbe manuelt som du selv skriver.
desværre :) Så jeg tror det bliver min løsning men tak for hjælpen
alligevel :)
Tom
2010-07-31 13:22:34 UTC
Permalink
Post by Effix
og det virker fint med europæiske stregkoder men med CD'er importeret
fra USA går der kage i det og så er det der skal laves om i
Har du kontaket leverandøren?
Hvis det et generelt program kan du være heldig han/hun er lydhør.
--
best regards
Thomas Schulz
http://webhelpforums.com
Help with website and webmaster issues
Adam Sjøgren
2010-07-31 13:57:23 UTC
Permalink
Post by Effix
Der var vidst lige en trykfejl i mit eksempel
C:\files\abcd\efg\hijklm
C:\files\bcd\afg\ijklme
[...]
Post by Effix
Eksempler 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
Adam Sjøgren
2010-07-31 14:04:52 UTC
Permalink
Hov, bemærk også at jeg ikke har prøvet det på Windows - men det burde
kunne bringes til at virke på kortere tid end at bruge måneder på at
lære et sprog fra bunden, og hurtigere end at bruge et par timer på at
omdøbe det hele per håndkraft (med de fejlmuligheder det giver!)


Mvh.

Adam
--
"Omvejviser" Adam Sjøgren
***@koldfront.dk
Loading...