Mehrfach-Umbenennung Dateien kopieren/verschieben

German support forum

Moderators: Hacker, Stefan2, white

User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

ifox68 wrote:Wie kann ich z.B Screenshots schicken?
Du kannst es entweder bei ImageShack oder www.abload.de hochladen oder du markierst einfach den Text in der Konsole und kopierst ihn hier ins Forum (bitte als Code einfügen!). Für letztere Variante rechte Maustaste auf die Titelleiste -> Bearbeiten -> Markieren. Dann mit der Maus markieren und wieder rechte Maustaste auf die Titelleiste -> Kopieren.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
ifox68
Junior Member
Junior Member
Posts: 19
Joined: 2008-04-07, 21:06 UTC

Post by *ifox68 »

Ich hoffe du kannst damit was anfangen.

Anbei die Fehlermeldungen:
Syntaxfehler.
Verschieben: Kunden\Raab\briefe\1284.3
Das System kann den angegebenen Pfad nicht finden.

4
Umbenennen: Aerztliches Attest_19950411_0000.txt --> Kunden\Raab\briefe\12
84.4
Syntaxfehler.
Verschieben: Kunden\Raab\briefe\1284.4
Das System kann den angegebenen Pfad nicht finden.

1
Umbenennen: Aerztl Attest z Vorl bei KK_19980625_0000.txt --> Kunden\Raab
\briefe\1286.1
Syntaxfehler.
Verschieben: Kunden\Raab\briefe\1286.1
Das System kann den angegebenen Pfad nicht finden.

2
Umbenennen: Ausfuehrlicher Brief_19981014_0000.txt --> Kunden\Raab\briefe\
1286.2
Syntaxfehler.
Verschieben: Kunden\Raab\briefe\1286.2
Das System kann den angegebenen Pfad nicht finden.

---------------------------------------------
Auszug aus der Datei move.txt
z:\Kunden\Raab\briefe\1020\
z:\Kunden\Raab\briefe\1021\
z:\Kunden\Raab\briefe\1022\
z:\Kunden\Raab\briefe\1023\
z:\Kunden\Raab\briefe\1024\
---------------------------------------------

Rename.bat
@echo off

setlocal ENABLEDELAYEDEXPANSION

set target=Z:\Kunden\Raab\briefe_neu
set path_file=move.txt
set num=1

echo.
set /p answer=Forfahren mit Umbenennen und Verschieben von Dateien in "%path_file%" nach "%target%" ^(j/n^)?
if /i "%answer%"=="j" goto DO_IT
goto :EOF

:DO_IT
if not exist "%target%" md "%target%" > NUL

for /F "tokens=*" %%J IN (%path_file%) DO (
set num=1
for /F "tokens=*" %%A IN ('dir /b /a-d /ogn "%%J"') DO (
echo.
set verz=%%~npJ
set file=%%A
if "%%~nxJ"=="" (
REM echo mit Backslash
REM Alle Zeichen, ohne das erste und das letzte (sind Backslashes) in dieselbe Variable kopieren
set verz=!verz:~1,-1!
set b_slash=
) ELSE (
REM echo ohne Backslash
REM Alle Zeichen, ohne das erste (ist ein Backslash) in dieselbe Variable kopieren
set verz=!verz:~1!
set b_slash=\
)
echo !num!
echo Umbenennen^: !file! --^> !verz!.!num!
ren "%%~J!b_slash!!file!" "!verz!.!num!" > NUL
echo Verschieben^: !verz!.!num!
move "%%~J!b_slash!!verz!.!num!" "%target%\" > NUL
set /a num=!num!+1
)
)

endlocal
User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

OK, ich weiß jetzt, wo das Problem liegt. Das Einzige, was ich nicht getestet habe, sind mehrere Verzeichnisebenen, ich hab immer nur eine benutzt :?

Code: Select all

Umbenennen: Aerztliches Attest_19950411_0000.txt --> Kunden\Raab\briefe\1284.4 
Kann nicht funktionieren, weil man beim Umbenennen keinen anderen Pfad angeben kann/darf.
Das nachfolgende Verschieben geht dann natürlich auch schief.

Lösung des Ganzen: in der move.txt die abschließenden Backslashes weglassen und folgende Batchdatei (eigtl. wieder die vom Anfang ;)):

Code: Select all

@echo off

setlocal ENABLEDELAYEDEXPANSION

set target=C:\ziel
set path_file=move.txt
set num=1

echo.
set /p answer=Forfahren mit Umbenennen und Verschieben von Dateien in "%path_file%" nach "%target%" ^(j/n^)? 
if /i "%answer%"=="j" goto DO_IT
goto :EOF

:DO_IT
if not exist "%target%" md "%target%" > NUL

for /F "tokens=*" %%J IN (%path_file%) DO (
    set num=1
    for /F "tokens=*" %%A IN ('dir /b /a-d /ogn "%%J"') DO (
        echo.
        set verz=%%~nxJ
        set file=%%A

        echo !num!
        echo    Umbenennen^:    !file! --^> !verz!.!num!
        ren "%%~J!b_slash!!file!" "!verz!.!num!" > NUL
        echo    Verschieben^:   !verz!.!num!
        move "%%~J!b_slash!!verz!.!num!" "%target%\" > NUL
        set /a num=!num!+1
    )
)

endlocal
Und wieder als UUE-Code:

Code: Select all

begin 644 rename_and_move.cmd
M0&5C:&\@;V9F#0H-"G-E=&QO8V%L($5.04),141%3$%9141%6%!!3E-)3TX-
M"@T*<V5T('1A<F=E=#U#.EQZ:65L#0IS970@<&%T:%]F:6QE/6UO=F4N='AT
M#0IS970@;G5M/3$-"@T*96-H;RX-"G-E="`O<"!A;G-W97(]1F]R9F%H<F5N
M(&UI="!5;6)E;F5N;F5N('5N9"!697)S8VAI96)E;B!V;VX@1&%T96EE;B!I
M;B`B)7!A=&A?9FEL924B(&YA8V@@(B5T87)G970E(B!>*&HO;EXI/R`-"FEF
M("]I("(E86YS=V5R)2(]/2)J(B!G;W1O($1/7TE4#0IG;W1O(#I%3T8-"@T*
M.D1/7TE4#0II9B!N;W0@97AI<W0@(B5T87)G970E(B!M9"`B)71A<F=E="4B
M(#X@3E5,#0H-"F9O<B`O1B`B=&]K96YS/2HB("4E2B!)3B`H)7!A=&A?9FEL
M924I($1/("@-"B`@("!S970@;G5M/3$-"B`@("!F;W(@+T8@(G1O:V5N<STJ
M(B`E)4$@24X@*"=D:7(@+V(@+V$M9"`O;V=N("(E)4HB)RD@1$\@*`T*("`@
M("`@("!E8VAO+@T*("`@("`@("!S970@=F5R>CTE)7YN>$H-"B`@("`@("`@
M<V5T(&9I;&4])25!#0H-"B`@("`@("`@96-H;R`A;G5M(0T*("`@("`@("!E
M8VAO("`@(%5M8F5N96YN96Y>.B`@("`A9FEL92$@+2U>/B`A=F5R>B$N(6YU
M;2$-"B`@("`@("`@<F5N("(E)7Y*(6)?<VQA<V@A(69I;&4A(B`B(79E<GHA
M+B%N=6TA(B`^($Y53`T*("`@("`@("!E8VAO("`@(%9E<G-C:&EE8F5N7CH@
M("`A=F5R>B$N(6YU;2$-"B`@("`@("`@;6]V92`B)25^2B%B7W-L87-H(2%V
M97)Z(2XA;G5M(2(@(B5T87)G970E7"(@/B!.54P-"B`@("`@("`@<V5T("]A
D(&YU;3TA;G5M(2LQ#0H@("`@*0T**0T*#0IE;F1L;V-A;`T*
`
end
sum -r/size 41502/801
Ursache des Problems ist, dass bei vorhandenem abschließenden Backslash die Variable %%~nxJ leer bleibt und ich damit nicht an den Namen des Verzeichnisses rankomme, in dem die Datei liegt.
Hängt jedoch kein Backslash am Pfad, gibt %%~nxJ den Namen der letzten Verzeichnisebene zurück. Und genau das brauche ich ja.

Ich hatte gedacht, dass man sich als Lösung mit %%~npJ den Pfad und den Namen (mit Backslash ja leer) holt und dann nur den Backslash am Ende entfernt. Aber wie ich jetzt sehe, funktioniert das nicht, weil %%~npJ natürlich den kompletten Pfad - auch über mehrere Ebenen - zurückgibt. Und das rename kann damit nichts anfangen.

Mögliche Lösung wäre die Benutzung eines Zusatzprogramms aus dem Linux-Bereich: sed, der Streamline-Editor, der reguläre Ausdrücke versteht und man sich so in jedem Fall die letzte Verzeichnisebene als neuen Namen holen kann.

Oder hat sonst jemand noch ne andere Idee, wie das mit den kryptischen MS-Tools machbar wäre?

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
ifox68
Junior Member
Junior Member
Posts: 19
Joined: 2008-04-07, 21:06 UTC

Post by *ifox68 »

Wie kann ich die move.txt ohne Backslash am Ende erzeugen?
User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

ifox68 wrote:Wie kann ich die move.txt ohne Backslash am Ende erzeugen?
Pfade mit dem TC kopieren und einen Editor benutzen, der die Backslashes am Ende entfernen kann. So würde ich das jedenfalls machen, z.B. mit EditPad Pro. EditPad Lite kann das sicherlich auch.
EDIT: Die Lite-Version kann keine regulären Ausdrücke... Du könntest also z.B. die Testversion von EditPad Pro nutzen.
Ich weiß nicht, ob kostenlose Editoren wie Notepad++ oder Notepad2 oder andere sowas können...

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
StatusQuo
Power Member
Power Member
Posts: 1524
Joined: 2007-01-17, 21:36 UTC
Location: Germany

Post by *StatusQuo »

ifox68 wrote:Wie kann ich die move.txt ohne Backslash am Ende erzeugen?
StatusQuo wrote:So sollte es auch funktionieren (angehängter Punkt), das lässt sich aus TC z.B. mit MakeBat-Plugin erzeugen:

Code: Select all

c:\briefe\1020\.
...über Alt+F5 Dialog, das Ergebnis landet (konfigurierbar) direkt in einer Datei - der ANSI-Zeichensatz muss danach noch an die ASCII-Batch angepasst werden (oder umgekehrt, wie auch immer).

%%~nxJ liefert auch dann den Namen zurück, wenn "\." dranhängt.
Who the hell is General Failure, and why is he reading my disk?
-- TC starter menu: Fast yet descriptive command access!
User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

%%~nxJ liefert auch dann den Namen zurück, wenn "\." dranhängt.
Ja nu, das hab ich nicht getestet. Aber dafür sind ja die anderen da, damit auch andere mitdenken :lol:

Hier nochmal eine aktualisierte Fassung, nun auch mit Beachtung des Zeichensatzes, damit auch Namen mit Umlauten und/oder ß korrekt behandelt werden:

Code: Select all

begin 644 rename_and_move.cmd
M0&5C:&\@;V9F#0H-"E)%32`M+2T@16EN<W1E;&QU;F=E;B`M+2TM+2TM+2TM
M+2TM+2TM#0IS970@=&%R9V5T/4,Z7'II96P-"G-E="!P871H7V9I;&4];6]V
M92YT>'0-"E)%32`M+2T@16YD92!%:6YS=&5L;'5N9V5N("TM+2TM+2TM+2TM
M#0H-"F5C:&\N#0IS970@+W`@86YS=V5R/49O<F9A:')E;B!M:70@56UB96YE
M;FYE;B!U;F0@5F5R<V-H:65B96X@=F]N($1A=&5I96X@:6X@(B5P871H7V9I
M;&4E(B!N86-H("(E=&%R9V5T)2(@7BAJ+VY>*3\@#0II9B`O:2`B)6%N<W=E
M<B4B/3TB:B(@9V]T;R!$3U])5`T*9V]T;R`Z14]&#0H-"@T*.D1/7TE4#0I2
M14T@0V]D97!A9V5S(&%U<R!D97(@4F5G:7-T<GD@;&5S96X@=6YD(&EN(%5M
M9V5B=6YG<W9A<FEA8FQE('-C:')E:6)E;@T*9F]R("]F(")S:VEP/30@=&]K
M96YS/3,B("4E:2!I;B`H#0H@("=R96<N97AE('%U97)Y(")(2T597TQ/0T%,
M7TU!0TA)3D5<4UE35$5-7$-U<G)E;G1#;VYT<F]L4V5T7$-O;G1R;VQ<3FQS
M7$-O9&5086=E(B`O=B`B04-0(B<-"BD@9&\@*`T*("!S970@86-T:79E7V-P
M/24E:0T**0T*#0IF;W(@+V8@(G-K:7`]-"!T;VME;G,],R(@)25I(&EN("@-
M"B`@)W)E9RYE>&4@<75E<GD@(DA+15E?3$]#04Q?34%#2$E.15Q365-414U<
M0W5R<F5N=$-O;G1R;VQ3971<0V]N=')O;%Q.;'-<0V]D95!A9V4B("]V(")/
M14U#4"(G#0HI(&1O("@-"B`@<V5T(&]E;5]C<#TE)6D-"BD-"@T*4D5-($-O
M9&5P86=E('=E8VAS96QN+"!D86UI="!D97(@6F5I8VAE;G-A='H@=F]N(%9E
M<GIE:6-H;FES+2!U;F0@1&%T96EN86UE;B!S=&EM;70-"E)%32`M+2T@:68M
M0F5F96AL.B!7_')G87)O=6YD(&;\<B!7:6YD;W=S('@V-"P@=V\@97,@:6X@
M9&5R(#,R(&)I="!#340@:V5I;B!C:&-P(&UE:'(@9VEB=`T*:68@(ELE4')O
M9W)A;49I;&5S*'@X-BDE72(@/3T@(EM=(B!C:&-P("5A8W1I=F5?8W`E(#X@
M3E5,#0H-"G-E=&QO8V%L($5.04),141%3$%9141%6%!!3E-)3TX-"@T*:68@
M;F]T(&5X:7-T("(E=&%R9V5T)2(@;60@(B5T87)G970E(B`^($Y53`T*#0IF
M;W(@+T8@(G1O:V5N<STJ(B`E)4H@24X@*"5P871H7V9I;&4E*2!$3R`H#0H@
M("`@<V5T(&YU;3TQ#0H@("`@9F]R("]&(")T;VME;G,]*B(@)25!($E.("@G
M9&ER("]B("]A+60@+V]G;B`B)25*(B<I($1/("@-"B`@("`@("`@96-H;RX-
M"B`@("`@("`@<V5T('9E<GH])25^;GA*#0H@("`@("`@('-E="!F:6QE/24E
M00T*#0H@("`@("`@(&5C:&\@(6YU;2$-"B`@("`@("`@96-H;R`@("!5;6)E
M;F5N;F5N7CH@("`@(69I;&4A("TM7CX@(79E<GHA+B%N=6TA#0H@("`@("`@
M(')E;B`B)25^2B%B7W-L87-H(2%F:6QE(2(@(B%V97)Z(2XA;G5M(2(@/B!.
M54P-"B`@("`@("`@96-H;R`@("!697)S8VAI96)E;EXZ("`@(79E<GHA+B%N
M=6TA#0H@("`@("`@(&UO=F4@(B4E?DHA8E]S;&%S:"$A=F5R>B$N(6YU;2$B
M("(E=&%R9V5T)5PB(#X@3E5,#0H@("`@("`@('-E="`O82!N=6T](6YU;2$K
M,0T*("`@("D-"BD-"@T*4D5-($-O9&5P86=E('=I961E<B!Z=7+\8VMW96-H
M<V5L;@T*4D5-("TM+2!I9BU"969E:&PZ(%?\<F=A<F]U;F0@9OQR(%=I;F1O
M=W,@>#8T+"!W;R!E<R!I;B!D97(@,S(@8FET($--1"!K96EN(&-H8W`@;65H
M<B!G:6)T#0II9B`B6R50<F]G<F%M1FEL97,H>#@V*25=(B`]/2`B6UTB(&-H
M8W`@)6]E;5]C<"4@/B!.54P-"@T*96YD;&]C86P-"@T*<V5T(&]E;5]C<#T-
M"G-E="!A8W1I=F5?8W`]#0IS970@=&%R9V5T/0T*<V5T('!A=&A?9FEL93T-
!"@``
`
end
sum -r/size 28026/1756
MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
ifox68
Junior Member
Junior Member
Posts: 19
Joined: 2008-04-07, 21:06 UTC

Post by *ifox68 »

Vielen Dank, nach langem hin und her hat es aber funktioniert.

Gruß
ifox68
StatusQuo
Power Member
Power Member
Posts: 1524
Joined: 2007-01-17, 21:36 UTC
Location: Germany

Post by *StatusQuo »

ifox68 wrote:Vielen Dank, nach langem hin und her hat es aber funktioniert.
Interessant, hier hat's noch nicht ganz funktioniert.

2Dalai
Zwei Änderungen zur Perfektion:

1.) Die Variable b_slash wird in der letzten Version nicht mehr gesetzt, aber immer noch verwendet !?

=> Den eventuell vorhandenen Backslash aus move.txt habe ich mit einer zusätzlichen FOR-Anweisung unschädlich gemacht und den Backslash danach immer aktiviert.
Dabei entsteht bei vorhandenem Backslash zwar ggf. auch d:\pfad\\.\datei.ext, der doppelte Backslash scheint Win aber nicht zu stören, eine Testdatei mit/ohne funktionierte.
Aus:

Code: Select all

        set verz=%%~nxJ
        set file=%%A
wurde dazu

Code: Select all

        rem set verz=%%~nxJ
        set file=%%A

        REM abschließenden Backslash unschaedlich machen, falls vorhanden
        for /F "tokens=*" %%B in ("%%J\.") do set verz=%%~nxB

        REM immer Backslash hinzufügen - problemlos, nachdem er oben unschaedlich gemacht wurde
        set b_slash=\

2.) Bei Userantwort "N" auf die anfängliche Nachfrage werden einige gesetzte Variablen nicht zurückgesetzt (answer, path_file, target).
=> Wenn diese Zeile direkt an den Dateianfang gesetzt wird, erledigt sich das von selbst (Test OK unter W2k SP4):

Code: Select all

setlocal ENABLEDELAYEDEXPANSION
Ansonsten: hübsche Lösung!


P.S.:
REM --- if-Befehl: Würgaround für Windows x64, wo es in der 32 bit CMD kein chcp mehr gibt
Oops! :shock:
Wieder was gelernt...
Who the hell is General Failure, and why is he reading my disk?
-- TC starter menu: Fast yet descriptive command access!
User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Zwei Änderungen zur Perfektion:
Das Ding ist weit davon entfernt, perfekt zu sein. Mit sed und dessen regulären Ausdrücken wäre alles viel einfacher. Ja, ich weiß, dass auch findstr RegEx unterstützt, aber der nützt mir nix, weil ich suchen und ersetzen muss, findstr findet aber nur (match statt replace).
Die Variable b_slash wird in der letzten Version nicht mehr gesetzt, aber immer noch verwendet !?
Tja, so ist das mit den Überresten von nicht mehr benutzem Code...
der doppelte Backslash scheint Win aber nicht zu stören, eine Testdatei mit/ohne funktionierte.
Ja, unter Win2k und höher stört sowas nicht mehr. Aber ich wollte das aus Tradition und aus Sicherheitsgründen vermeiden. Denn schließlich hängen da auch ggf. wichtige Daten dran.

Code: Select all

REM abschließenden Backslash unschaedlich machen, falls vorhanden
        for /F "tokens=*" %%B in ("%%J\.") do set verz=%%~nxB 
Öhm, das geht doch auch einfacher:

Code: Select all

set verz=%%~nxJ\.
reicht IMO aus, oder hab ich was übersehen? Es wird in deiner Schleife nur ein \. angehangen, richtig?
Wenn diese Zeile direkt an den Dateianfang gesetzt wird, erledigt sich das von selbst (Test OK unter W2k SP4):
Ich war/bin mir nicht sicher, ob dadurch nicht das Setzen der Codepage-Variablen gestört wird. Denn es wird ja eine verzögerte Erweiterung (also Ersetzung) von Umgebungsvariablen aktiviert, und ich weiß nicht, ob das Auswirkungen auf "normale" Variablen %var% hat.
OK, könnte man umgehen, wenn man die Codepage-Sache ganz an den Anfang setzen würde und erst danach die Einstellungsvariablen setzt. Find ich aber doof, weil solche zu editierenden Variablen ganz am Anfang stehen sollten, damit man nicht lange suchen muss.
Ansonsten: hübsche Lösung!
Nuja, sie hat wohl funktioniert, aber krüppelig ist sowas trotzdem, wenn man keine String-Funktionen hat, die es einem doch sehr erleichtern würden (nicht nur in diesem Fall).

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
StatusQuo
Power Member
Power Member
Posts: 1524
Joined: 2007-01-17, 21:36 UTC
Location: Germany

Post by *StatusQuo »

Dalai wrote:

Code: Select all

REM abschließenden Backslash unschaedlich machen, falls vorhanden
        for /F "tokens=*" %%B in ("%%J\.") do set verz=%%~nxB 
Öhm, das geht doch auch einfacher:

Code: Select all

set verz=%%~nxJ\.
reicht IMO aus, oder hab ich was übersehen? Es wird in deiner Schleife nur ein \. angehangen, richtig?
Nicht nur - bei Eingangsdaten mit Backslash war "%%~nxJ" (im Test) immer leer, erst die Schleife holt den Namen aus dem Gesamtkonstrukt "%%~nxJ\." heraus.
Wenn diese Zeile direkt an den Dateianfang gesetzt wird, erledigt sich das von selbst (Test OK unter W2k SP4):
Ich war/bin mir nicht sicher, ob dadurch nicht das Setzen der Codepage-Variablen gestört wird.
Den Praxistest mit Umlauten in Verzeichnissen und Dateinamen hat's hier bestanden.
Denn es wird ja eine verzögerte Erweiterung (also Ersetzung) von Umgebungsvariablen aktiviert, und ich weiß nicht, ob das Auswirkungen auf "normale" Variablen %var% hat.
Sollte eigentlich nicht, abgesehen davon, dass !var! innerhalb der Schleife aktueller ist. Naja, Vorsicht ist die Mutter...
Nuja, sie hat wohl funktioniert
Und das zählt, oder nicht? ;)
Who the hell is General Failure, and why is he reading my disk?
-- TC starter menu: Fast yet descriptive command access!
User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

StatusQuo wrote:Nicht nur - bei Eingangsdaten mit Backslash war "%%~nxJ" (im Test) immer leer, erst die Schleife holt den Namen aus dem Gesamtkonstrukt "%%~nxJ\." heraus.
Da hast du allerdings Recht. Ich habe die ganze Zeit nach einer Lösung gesucht, aus einer normalen Env-Variable den Namen rauszufummeln, aber MS hat das nicht vorgesehen.
Das geht nur mit Laufvariablen und Batchparametern - Schwachsinn, wenn du mich fragst. Noch nicht mal das Entfernen von Anführungszeichen funktioniert mit normalen Env-Variablen - geht auch wieder nur mit Schleifen- und Parametervariablen.

Und dann kommst du mit einer solch einfachen, aber effektiven Lösung - klasse! :D
StatusQuo wrote:Und das zählt, oder nicht?
Ja, wollen wir hoffen, dass bei ifox68 nichts kaputtgegangen ist.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
StatusQuo
Power Member
Power Member
Posts: 1524
Joined: 2007-01-17, 21:36 UTC
Location: Germany

Post by *StatusQuo »

Dalai wrote:Das geht nur mit Laufvariablen und Batchparametern - Schwachsinn, wenn du mich fragst.
Schon. Andererseits ist's gratis Gehirnjogging. ;)
Who the hell is General Failure, and why is he reading my disk?
-- TC starter menu: Fast yet descriptive command access!
Post Reply