fastbyte23
Goto Top

Batch rar und der Dateiname

Guten Tag,
ich habe eine Aufgabe meines Ausbilder bekommen und versuche mich gerade zum ersten mal! an Batch Dateien.

cd D:\PL
C:\"Program Files\WinRAR\Rar.exe" a -agDD-MMM-YYYY -df .rar
pause

soweit bin ich gekommen ;)
Nun hätte ich noch gern das die rar den Namen des letzten Ordners annimmt wo die Daten drin liegen die ich zipe.
Gift es da eine Möglichkeit?
Danke für die Hilfe!

Content-Key: 287493

Url: https://administrator.de/contentid/287493

Printed on: April 27, 2024 at 11:04 o'clock

Member: Pjordorf
Pjordorf Nov 04, 2015 at 12:26:21 (UTC)
Goto Top
Hallo,

Zitat von @Fastbyte23:
Nun hätte ich noch gern das die rar den Datei Namen der Datei annimmt die ich zipe.
Warum nimmst du dann -ag?

Gift es da eine Möglichkeit?
Ja. Rar /? oder hier http://acritum.com/software/manuals/winrar/html/helpcmda.htm

http://acritum.com/software/manuals/winrar/

Gruß,
Peter
Member: Fastbyte23
Fastbyte23 Nov 04, 2015 at 13:26:21 (UTC)
Goto Top
Zitat von @Pjordorf:

Hallo,

Zitat von @Fastbyte23:
Nun hätte ich noch gern das die rar den Datei Namen der Datei annimmt die ich zipe.
Warum nimmst du dann -ag?
Weil ich gern datum_name.rar oder andersrum gern hätte.
Gift es da eine Möglichkeit?
Ja. Rar /? oder hier http://acritum.com/software/manuals/winrar/html/helpcmda.htm
>http://acritum.com/software/manuals/winrar/
also auch nicht wirklich weil ich da schon geschaut habe und keine Option passen will.
Member: Pjordorf
Pjordorf Nov 04, 2015 at 14:03:03 (UTC)
Goto Top
Hallo,

Zitat von @Fastbyte23:
Weil ich gern datum_name.rar oder andersrum gern hätte.
Dann musst du dir das so bauen das der Name beim Erstellen so benannt wird oder nach dem Packen eben den Namen umbenennen. beides geht mit Batch problemlos. Beispiele hier im Forum zur genüge.

also auch nicht wirklich weil ich da schon geschaut habe und keine Option passen will.
Entschuldige, aber ich habe nicht gewusst das du dort schon gewesen bist und dort auch gelesen hast...

Gruß,
Peter
Member: Fastbyte23
Fastbyte23 Nov 04, 2015 at 14:48:39 (UTC)
Goto Top
Zitat von @Pjordorf:

Hallo,

Zitat von @Fastbyte23:
Weil ich gern datum_name.rar oder andersrum gern hätte.
Dann musst du dir das so bauen das der Name beim Erstellen so benannt wird oder nach dem Packen eben den Namen umbenennen. beides geht mit Batch problemlos. Beispiele hier im Forum zur genüge.

also auch nicht wirklich weil ich da schon geschaut habe und keine Option passen will.
Entschuldige, aber ich habe nicht gewusst das du dort schon gewesen bist und dort auch gelesen hast...

Gruß,
Peter

Die meisten Beispiele beziehen sich hier im Forum leider auf Powershell, hättest du vllt einen Link zu einem Thread hier im Forum wo ich das nachlesen kann?
Member: Pjordorf
Pjordorf Nov 04, 2015 at 20:07:14 (UTC)
Goto Top
Hallo,

Zitat von @Fastbyte23:
Die meisten Beispiele beziehen sich hier im Forum leider auf Powershell
Dann suche nach Batch.

hättest du vllt einen Link zu einem Thread hier im Forum wo ich das nachlesen kann?
Nein, aber den Hinweis den Namen der Datei vorher auszulesen und dann weiter zu verarbeiten.
for /f "delims=" %%S in ('dir /b "D:\PL\*.*"') do set "ZuZippen=%%~nS"  
set
pause
hiermit wird der letzte Dateiname ausgelesen und in der Variable (Sitzung) ZuZippen gespeichert. Damit kann in der Sitzung weiter gearbeitet werden.

Und eine Möglichkeit Datum sowie Uhrzeit in Batch abzufragen ist
cls
Time /t
Date /t
pause
Eine Anlaufstelle für Batch ist http://www.robvanderwoude.com/batchstart.php

Gruß,
Peter
Member: Endoro
Endoro Nov 05, 2015 updated at 01:26:31 (UTC)
Goto Top
Hey,
an der Kommandozeile würde das so aussehen:
for /f "tokens=2delims==" %a in ('wmic path Win32_operatingsystem get localdatetime /format:value') do @for /f %b in ("%~a") do @set "datetime=%~b"&for /f %c in ("%datetime:~6,2%-%datetime:~4,2%-%datetime:~0,4%") do @for %d in (*.txt) do @echo rar a "%~c-%~nd" "%~d"  
Für eine Batch müssen die Prozentzeichen verdoppelt werden. Die "et" können weggelassen werden. Zum Scharfstellen noch "echo" löschen. Funktioniert nicht unter XP ohne WMI.
Gruß, Endoro
Member: Fastbyte23
Fastbyte23 Nov 06, 2015 updated at 10:53:56 (UTC)
Goto Top
Zitat von @Pjordorf:

Hallo,

hättest du vllt einen Link zu einem Thread hier im Forum wo ich das nachlesen kann?
Nein, aber den Hinweis den Namen der Datei vorher auszulesen und dann weiter zu verarbeiten.
for /f "delims=" %%S in ('dir /b "D:\PL\*.*"') do set "ZuZippen=%%~nS"  
> set
> pause
hiermit wird der letzte Dateiname ausgelesen und in der Variable (Sitzung) ZuZippen gespeichert. Damit kann in der Sitzung weiter >>gearbeitet werden.
Ok, hättest du jetzt auch noch den Befahl wie ich die Variable der rar Datei als Namen hinzufüge?

Und eine Möglichkeit Datum sowie Uhrzeit in Batch abzufragen ist
cls
>> Time /t
>> Date /t
>> pause
Eine Anlaufstelle für Batch ist http://www.robvanderwoude.com/batchstart.php
Hierfür habe ich ja –ag, der fügt mir ja das Aktuelle Datum ein.

Eigentlich bräuchte ich wie hier eine Lösung Dateinamen via batch script auslesen, Datei zippen und anschliessend in den ausgelesenen Namen umbenennen
Nur halt das meine Zip den Ordnernamen und nicht den Dateinamen annimmt.
Member: Fastbyte23
Fastbyte23 Nov 10, 2015 at 06:34:01 (UTC)
Goto Top
Kann mir hierbei kein weiterer helfen?
Member: bastla
Solution bastla Nov 17, 2015, updated at Nov 18, 2015 at 07:44:54 (UTC)
Goto Top
Hallo Fastbyte23!

Wenn Du ohnehin schon per cd D:\PL (sollte übrigens besser cd /d D:\PL lauten) den Quellordner vorgibst, kannst Du dessen Namen ja auch in die RAR-Anweisung schreiben:
"C:\Program Files\WinRAR\Rar.exe" a -agDD-MMM-YYYY -df PL_.rar
Wolltest Du das allerdings variabel (und bezogen auf den aktuellen Ordner) umsetzen, dann eben
for /f "delims=" %%i in ("%CD%") do set "Ordnername=%%~nxi"  
"%ProgramFiles%\WinRAR\Rar.exe" a -agDD-MMM-YYYY -df "%Ordnername%_.rar"  
bzw kürzer
for /f "delims=" %%i in ("%CD%") do "%ProgramFiles%\WinRAR\Rar.exe" a -agDD-MMM-YYYY -df "%%~nxi_.rar"
oder noch kürzer (. ist immer der gerade aktuelle Ordner) :
for %%i in (.) do "%ProgramFiles%\WinRAR\Rar.exe" a -agDD-MMM-YYYY -df "%%~nxi_.rar"
Das "PL" in "D:\PL" wird (als letzter Teil des Pfades) quasi als "Dateiname" betrachtet. Um auch für den Fall vorzusorgen, dass ein Punkt in diesem Namen enthalten wäre, wird zur Sicherheit auch die Extension mit einbezogen ...

Infos findest Du einerseits zB per
cd /?
for /?
bzw im sehr empfehlenswerten Tutorial zur FOR-Schleife von Friemler ...

Grüße
bastla

P.S.: Dass das so nur funktioniert, wenn der Quellordner nicht ein Root-Ordner wie "D:\" ist, wäre ggf auch noch zu beachten ...
Member: Fastbyte23
Fastbyte23 Nov 18, 2015 at 07:57:40 (UTC)
Goto Top
Hallo bastla,

vielen Danke genau das habe ich gesucht!
Sobald ich den genauen Ordner D:\CommissionPath\CommissionPathCA angebe zippt er alles was in dem Ordner ist mit den Namen z.B. „CommissionPathCA_18-Nov-2015.rar“.
Jetzt wollte ich das er anstatt nur in diesem Ordner geht alle Ordner im Pfad D:\CommissionPath\ absucht und in diesen die Dateien zippt, also,
D:\CommissionPath\CommissionPathCA CommissionPathCA_18-Nov-2015.rar
D:\CommissionPath\CommissionPathCE CommissionPathCE_18-Nov-2015.rar
D:\CommissionPath\CommissionPathMX CommissionPathMX_18-Nov-2015.rar
etc.
aber nicht den Ordner sondern nur die Dateien in diesem Ordner!

Daraufhin bin ich los gezogen und habe mich im Forum umgeschaut

@echo off & setlocal
set "Startordner=D:\CommissionPath"  
set "ZIPProg=%ProgramFiles%\7-zip\7z.exe"  

for /d /r "%Startordner%" %%i in (*) do (  
    pushd "%%i"  
    echo Bearbeite "%%i"  
    if not exist "%%~ni.zip" (  
        echo "%ZIPProg%" a "%%~ni.zip" *.* -mx0 && (  
            for /f "delims=" %%a in ('dir /b *.* 2^>nul') do if /i "%%a" neq "%%~ni.zip" echo del "%%a"  
        )
    )
    popd
)
echo Fertig.
Pause

Da ich nicht genau wusst wie ich 7zip ersetze habe ich es einmal mal installiert und getestet.
Aber wie gesagt irgendwo ist noch ein fehler, da ich das als anwort bekomme

Bearbeite "D:\CommissionPath\CommissionPathCA"  
"C:\Program Files\7-zip\7z.exe" a "CommissionPathCA.zip" *.* -mx0  
del "Bonus_10.2015_24002688_20151106_104810.pdf"  
del "Bonus_10.2015_325715_20151106_104803.pdf"  
del "Bonus_10.2015_6112659_20151106_104805.pdf"  
del "Bonus_10.2015_6137265_20151106_104807.pdf"  
del "CommissionList2010_Liste_20151106_104738.pdf"  
del "HyperWalletCA10.xls"  
Bearbeite "D:\CommissionPath\CommissionPathCE"  
"C:\Program Files\7-zip\7z.exe" a "CommissionPathCE.zip" *.* -mx0  
del "Bonus_10.2015_24002688_20151106_104810.pdf"  
del "Bonus_10.2015_325715_20151106_104803.pdf"  
del "Bonus_10.2015_6112659_20151106_104805.pdf"  
del "Bonus_10.2015_6137265_20151106_104807.pdf"  
del "CommissionList2010_Liste_20151106_104738.pdf"  
del "HyperWalletCA10.xls"  
Fertig.
Drücken Sie eine beliebige Taste . . .

Nun würde ich gern beides miteinander verknüpfen das er mit Winrar zippt und den Namen mit Datum ausgibt und über die Ordner geht.
Danke schon mal für deine Hilfe!
Member: bastla
Solution bastla Nov 19, 2015, updated at Dec 02, 2015 at 11:36:42 (UTC)
Goto Top
Hallo Fastbyte23!

Wo sollen denn die Archivdateien erstellt werden - in den Unterordnern oder alle in "D:\CommissionPath"? (Sofern es übrigens nur um Dateien eines bestimmten Typs - in Deinem Beispiel PDF - geht, würde ich diesen Typ zur Sicherheit auch mit angeben.)

Für den ersten Fall würde ich das (ungetestet) etwa so anlegen:
@echo off & setlocal
set "Startordner=D:\CommissionPath"  
set "ZIPProg=%ProgramFiles%\WinRAR\Rar.exe"  
set "Typ=pdf"  

for /d %%i in ("%Startordner%\*") do (  
    echo Bearbeite "%%i"  
    if not exist "%%~i\%%~nxi.rar" "%ZIPProg%" a -agDD-MMM-YYYY "%%~i\%%~nxi_.rar" -df -ep "%%~i\*.%Typ%"  
)
echo Fertig.
Pause
Falls Du die Ausgabe von WinRAR nicht angezeigt haben willst, wäre an die Zeile noch >nul anzufügen ...

Wenn alle RAR-Dateien in "D:\CommissionPath" liegen sollen, ginge das noch etwas einfacher (ebenfalls ungetestet):
@echo off & setlocal
set "Startordner=D:\CommissionPath"  
set "ZIPProg=%ProgramFiles%\WinRAR\Rar.exe"  
set "Typ=pdf"  

for /d %%i in ("%Startordner%\*") do (  
    echo Bearbeite "%%i"  
    if not exist "%%~nxi.rar" "%ZIPProg%" a -agDD-MMM-YYYY "%%~nxi_.rar" -df -ep "%%~i\*.%Typ%"  
)
echo Fertig.
Pause
Noch ein Hinweis: Es werden in dieser Variante (im Gegensatz zu for /d /r) nur die unmittelbaren Unterordner des Startordners, nicht aber etwaige Unter-Unterordner, verarbeitet ...

Grüße
bastla
Member: Fastbyte23
Fastbyte23 Dec 02, 2015 at 13:02:28 (UTC)
Goto Top
Hallo Bastla,

kurze Rücksendung! Dein Batch funktioniert wunderbar, jetzt wollte ich das mit 7zip testen und bekomme die ganze Zeit Fehlermeldungen und wenn ich eine Fehlermeldung behoben habe kommt die nächste. Im moment hänge ich an
type of archive is not specified


@echo off & setlocal
Set NAME=%date%
set "Startordner=D:\CommissionPath"  
set "ZIPProg=C:\Program Files (x86)\7-zip\7z.exe"  
set "Typ=pdf"  

for /d %%i in ("%Startordner%\*") do (  
    echo Bearbeite "%%i"  
    if not exist "%%~i\%%~nxi.7z" "%ZIPProg%" a %NAME% "%%~i\%%~nxi_.7z" -sdel -an "%%~i\*.%Typ%"  
)
pause


kannst du mir noch einmal helfen?
Member: bastla
bastla Dec 02, 2015 at 17:22:21 (UTC)
Goto Top
Hallo Fastbyte 23!

Wird's mit der folgenden (natürlich ungetesteten face-wink) Zeile 9 besser?
if not exist "%NAME%_%%~i\%%~nxi.7z" "%ZIPProg%" a "%NAME%_%%~i\%%~nxi_.7z" -sdel -an "%%~i\*.%Typ%"
Grüße
bastla

P.S.: Zeile 2 würde bei mir eher so aussehen:
set "NAME=%date:~-4%-%date:~-7,2%-%date:~-10,2%"
und außerdem hieße die Variable nicht "NAME" sondern "Datum" ...
Member: Fastbyte23
Fastbyte23 Dec 04, 2015 at 06:54:24 (UTC)
Goto Top
Danke für die schnelle Antwort, leider bekomme ich immer noch

Bearbeite "D:\CommissionPath\CommissionPathCA"  

7-Zip [32] 15.10 beta : Copyright (c) 1999-2015 Igor Pavlov : 2015-11-01

ERROR:
type of archive is not specified
Bearbeite "D:\CommissionPath\CommissionPathCE"  

7-Zip [32] 15.10 beta : Copyright (c) 1999-2015 Igor Pavlov : 2015-11-01

ERROR:
type of archive is not specified
Member: bastla
bastla Dec 04, 2015 at 11:53:17 (UTC)
Goto Top
Hallo Fastbyte23!

Neuer Versuch:
if not exist "%NAME%_%%~i\%%~nxi.7z" "%ZIPProg%" a -sdel -t7z "%NAME%_%%~i\%%~nxi_.7z" "%%~i\*.%Typ%"
Grüße
bastla
Member: Fastbyte23
Fastbyte23 Dec 04, 2015 at 13:19:33 (UTC)
Goto Top
Ich glaube du bist auf dem richtigen weg, irgendwas muss wohl weg gelöscht werden da der Pfad nicht merh stimmt.

Bearbeite "D:\CommissionPath\CommissionPathCA"  

7-Zip [32] 15.10 beta : Copyright (c) 1999-2015 Igor Pavlov : 2015-11-01

Scanning the drive:
5 files, 680502 bytes (665 KiB)

Creating archive: 2015-12-04_D:\CommissionPath\CommissionPathCA\CommissionPathC
_.7z

Items to compress: 5


Error:
cannot open file
2015-12-04_D:\CommissionPath\CommissionPathCA\CommissionPathCA_.7z
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung
ist falsch.


System ERROR:
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung
ist falsch.
Bearbeite "D:\CommissionPath\CommissionPathCE"  

7-Zip [32] 15.10 beta : Copyright (c) 1999-2015 Igor Pavlov : 2015-11-01

Scanning the drive:
5 files, 680502 bytes (665 KiB)

Creating archive: 2015-12-04_D:\CommissionPath\CommissionPathCE\CommissionPathC
_.7z

Items to compress: 5


Error:
cannot open file
2015-12-04_D:\CommissionPath\CommissionPathCE\CommissionPathCE_.7z
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung
ist falsch.


System ERROR:
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung
ist falsch.
Member: bastla
bastla Dec 04, 2015 at 21:48:45 (UTC)
Goto Top
Hallo Fastbyte23!

Das Datum vor dem Laufwerksbuchstaben kann ja nicht funktionieren - hätte mir schon aufgefallen sein sollen ... face-sad

Dann also so:
if not exist "%%~i\%NAME%_%%~nxi.7z" "%ZIPProg%" a -sdel -t7z "%%~i\%NAME%_%%~nxi.7z" "%%~i\*.%Typ%"
oder so:
if not exist "%%~i\%%~nxi_%NAME%.7z" "%ZIPProg%" a -sdel -t7z "%%~i\%%~nxi_%NAME%.7z" "%%~i\*.%Typ%"
Grüße
bastla