Batch Ordner-Namen als Variable setzen

Cassius1985

Captain
Registriert
Sep. 2004
Beiträge
3.583
Hi Leute,

ich bastel schon wieder an meinem Script, bzw. wurde ich dazu gezwungen :)

Das ist der Code aktuell, der genau das macht, was ich will:

Code:
@echo off

set "aktuellerbildordner=%userprofile%\Pictures\%date:~-4%-%date:~-7,2%-%date:~-10,2%"
set "rootfolder=D:\Photos"
set letzterprozess=
    for /f "tokens=* delims=" %%g IN ('dir /B /AD /TC /O-D "%rootfolder%"') DO @(

rem echo %aktuellerbildordner%

%SystemRoot%\system32\rundll32.exe "%SystemDrive%\Program Files\Windows Photo Viewer\photoAcq.dll",PhotoAndVideoAcquire

ren %aktuellerbildordner%\001.JPG 14.jpg
move "%aktuellerbildordner%\14.JPG" "%rootfolder%%letzterprozess%\%%g\Detail\"

goto end

)

pause

:end
exit

Es geht um Zeile 12/13:
Hier soll der gefundene Ordner mit in den Dateinamen.

Also:
von 001.jpg auf Akte123XY_14.jpg

Wenn ich mir %letzterprozess%\%%g per Echo anzeigen lasse, wird "\Akte123XY" angezeigt. Ich weiß nicht wo der "\" am Anfang herkommt und ich kann diese Variable leider nicht für den "ren" Befehl nutzen: Syntax Error...

Habe schon Google bemüht, allerdings verstehe ich die Lösungsansätze leider nicht :/

Es ist auch möglich, die Datei "001.jpg" erst in den Zielordner zu schieben und dort die Umbenennung zu machen, der Dateiname währe dann 2 Ordner überhalb des aktuellen Pfades.


danke vorab :)
 
schon mal advanced renamer versucht?
damit kann man viel Blödsinn anstellen auch so sachen wie der datei des ordnernames verpassen.
 
Ja, der wird aktuell noch benutzt.
Am Ende vom Tag wird bisher ein Script gestartet, welches alle 14.jpg entsprechend umbenennt.
Das hat den Nachteil dass ich keinen Zwischenexport machen kann und immer aufpassen muss, welche Verzeichnisse schon angepasst sind und welche nicht, daher möchte ich das Umbenennen mit ins Script packen, dass eh ausgeführt wird.
 
Dann müsste der \ aber nach der Variable kommen, er kommt aber davor :confused_alt:
Dazu kommt dann noch der Fehlerhafte Syntax, wenn ich diese Variable als Dateinamen nehmen möchte.

ein echo nur von %letzterprozess% wird leer ausgegeben :/
 
Ich nochmal,

das ganze funktioniert noch immer gut, jetzt wollte ich noch soetwas wie ein automatisches Backup einbauen, aber ich scheitere an der Unterscheidung von Ordnernamen :freaky:

Ich möchte einfach verschiedene Ordner in verschiedene Ziele packen:

Jeder Ordner, der mit "GW" anfängt soll nach /Ziel\GW_2020 kopiert werden.
Jeder Ordner, der NICHT mit "GW" anfängt soll nach /Ziel\2020 kopiert werden.

Das geht bestimmt mit einer for-schleife, aber da setzt mein Hirn wieder aus...

Edit:

for /R "%rootfolder%" /D %%a in (GW*) do (echo %%a)

Listet mir die Ordner auf, aber wenn ich dann setze:

for /R "%rootfolder%" /D %%a in (GW*) do (xcopy D:\Test\%%a E:\Test\*)

bekomme ich die Meldung: Unzulässige Parameterzahl | Datei nicht gefunden. Sollte er nicht nach einem Ordner schauen?

mit:

for /f "tokens=*" %%G in ('dir /b %rootfolder%') do echo Found %%G
resp.
for /f "tokens=" %%G in ('dir /b %rootfolder%') do (xcopy D:\Test\%%G E:\Test\)

Kopiert mir jedes Verzeichnis, kann ich hier bei tokens irgendwie den Namen des Ordnerns ein und ausgrenzen?

Hier die Lösung:
Code:
xcopy D:\Produkte D:\Arbeit /E /D /Y
for /f "tokens=*" %%a in ('dir D:\Arbeit\GW* /ad /b') do (

robocopy /S /E /MOVE "D:\Arbeit\%%a" "D:\Arbeit2\GW\%%a"
)
robocopy /S /E /MOVE D:\Arbeit\ D:\Arbeit2\NW\
 
Zuletzt bearbeitet:
Zurück
Oben