Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Unbekannten Ordnernamen einlesen

Frage Entwicklung Batch & Shell

Mitglied: Hausen

Hausen (Level 1) - Jetzt verbinden

17.12.2008, aktualisiert 17:00 Uhr, 4131 Aufrufe, 11 Kommentare

Hallo zusammen,

ich habe eine batch-Datei (OhneQuellen.bat) geschrieben die im Verzeichnis (Rechte Maustaste - Senden an) liegt .

Dies hat folgenden zweck:

- ich klicke eine x-beliebige zip-Datei auf meinem Rechner über "Rechte Maustaste - Senden an - OhneQuellen.bat" an

z.B.: D:\Projekte\0705010 Kunde 1.zip

- Diese Datei soll dann ins Verzeichnis "D:\Projekte\Sonstige Arbeiten\Temp\OhneQuellen\" entpackt werden

Was dann wie folgt aus sieht:

D:\Projekte\Temp\OhneQuellen\0705010 Kunde 1\Ordner 1
D:\Projekte\Temp\OhneQuellen\0705010 Kunde 1\Test 1
D:\Projekte\Temp\OhneQuellen\0705010 Kunde 1\Sonstiges
usw.

- In dem Ordner 0705010 Kunde 1 soll nun der Ordner "Test 1" mit Unterordnern und Dateien gelöscht werden.
- Dann soll der Ordner "0705010 Kunde 1" wieder gezippt werden zu "0705010 Kunde 1 ohne Quellen.zip"
- Und in das Verzeichnis verschoben werden aus dem die original Datei kommt also nach "D:\Projekte\"

Jetzt zu meinem Problem:

Wenn die Datei entzippt wird, weiss ich nicht wie der neu entstandene Ordner heisst da dieser nicht immer gleich dem Namen der zip-Datei ist.
Kann man diesen Ordnernamen (in meinem Beispiel der Ordner "0705010 Kunde 1") einlesen und in der Batchdatei verwenden? Und wenn ja wie?

Danke und Gruss Hausen
Mitglied: 60730
17.12.2008 um 16:26 Uhr
Servus,

ich habe eine batch-Datei (OhneQuellen.bat) geschrieben
Aha - kannst du uns die zur Verfügung stellen - oder sollen wir das rad von vorne erfinden?

Hintergrund - wenn ich deine Frage richtig interpretiere.

Wenn du schon beim anlegen der Zip den Ursprungs Pfad berücksichtigst - ist das entpacken und damit das herausfinden, woher die Zips Stammen - "einfacher".

Gruß
Bitte warten ..
Mitglied: bastla
17.12.2008 um 16:59 Uhr
Hallo Hausen und willkommen im Forum!

Die "billigste" Lösung wäre wohl, einen temporären Ordner (in dem sich nach dem Entzippen dann nur die Daten dieses einen Kunden befinden können) zu verwenden, und von diesem Ordner aus das restliche Handling vorzunehmen.

Den Kundenordner findest Du über
for /d %%i in ("D:\TempOrdner\*.*") do set "Ordner=%%i"
Grüße
bastla
Bitte warten ..
Mitglied: Hausen
23.12.2008 um 09:13 Uhr
Hallo Bastla,

entschuldige das ich mich erst jetzt wieder melde, aber ich war beruflich unterwegs.
Hier mal meine Batch:


Title=Projekt ohne Quellen speichern

:: Datei entzippen
set Quelle=%1
Set Ziel="D:\Projekte\Sonstige Arbeiten\Temp\OhneQuellen"

C:\Programme\WinZip\Wzunzip.exe -d %Quelle% %Ziel%

:: Ordnernamen ermitteln
for /d %%i in (%Ziel%\*.*) do set "Projektname=%%i"

:: Quellen löschen
rmdir /s /q "%Projektname%\s7asrcom"

:: Datei zippen
set Quelle="%Projektname%\*.*"
Set Projektname_Neu="%Projektname% Kunde"

C:\Programme\WinZip\wzzip.exe -a -ex -r -P %Projektname_Neu% %Quelle%

:: Entzipptes Programm löschen
rmdir /s /q "%Projektname%"


Es klappt jetzt aus so weit, nur habe ich nun das Problem, das wenn ich die zum Schluß gezippte Datei wieder entzippe, das diese dann den kompletten Pfad enthält.

z.B.: Die Datei die gezippt werden soll heisst : "0705010 Kunde 1"

Dann erzeugt die Batch auch die Datei "0705010 Kunde 1.zip" nur wenn ich diese dann entpacke sieht es dann so aus:

Projekte\Sonstige Arbeiten\Temp\OhneQuellen\0705010 Kunde 1.

Das liegt halt daran, as beim ermitteln des Ordnernamens der ganze Pfad eingelesen wird. Ich müsste aber nur den einzelnen Ordnernamen wissen.

Wie muss ich den Befehl dann abändern?

Gruss Hausen
Bitte warten ..
Mitglied: bastla
23.12.2008 um 17:30 Uhr
Hallo Hausen!

Da ich kein WinZip verwende, kann ich Dir leider die entsprechende Option nicht nennen - es könnte "-pr" oder etwas in der Art sein (für WinRAR wäre es zB "-ep" für "Exclude paths from names").

Du solltest den entsprechenden Schalter aber durch Aufruf der Online-Hilfe über zB
wzzip /?
oder
wzzip -help
selbst herausfinden können ...

Grüße
bastla
Bitte warten ..
Mitglied: Hausen
05.01.2009 um 08:43 Uhr
Hallo bastla,

das neue Jahr hat begonnen, also mit neuem Elan an alte Probleme.

Das mit dem wzzip klappt ja soweit, nur bei dem Befehl

for /d %%i in (%Ziel%\*.*) do set "Projektname=%%i"

wird der komplette Pfad eingelesen:

"Projekte\Sonstige Arbeiten\Temp\OhneQuellen\0705010 Kunde 1"

was ich benötige ist aber nur der letzte Ordnername, also:

"0705010 Kunde 1"

Kann ich den Befehl irgendwie abändern?

Gruss Hausen
Bitte warten ..
Mitglied: Biber
05.01.2009 um 10:12 Uhr
Moin Hausen,
Kann ich den Befehl irgendwie abändern?
Jepp, sogar zweifach.

Erstens, bitte die geeignete (hier: die Code-)Formatierung benutzen wie hier beschrieben.
Zweitens, die Zeile wie folgt abändern:
01.
for /d %%i in (%Ziel%\*.*) do set "Projektname=%%~nxi"
Dadurch wird nur der Name des "letzten" Ordners übernommen.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
05.01.2009 um 11:59 Uhr
@Biber: Danke

@Hausen: Da war ich leider zu sehr auf "gezippte Datei" und "kompletten Pfad" fokussiert (was besser klingt, als:
Den Satz "Ich müsste aber nur den einzelnen Ordnernamen wissen." habe ich glatt übersehen ... )

Grüße
bastla
Bitte warten ..
Mitglied: Hausen
05.01.2009 um 14:08 Uhr
Hallo zusammen,

danke ersteinmal für Euere antworten. Soweit funktioniert es jetzt auch.
Das Problem lag aber doch beim wzzip. Die Zeile muss wie folgt heißen:

01.
  
02.
 
03.
:: Datei zippen 
04.
set Quelle="%Projektname%\*.*" 
05.
Set Projektname_Neu="%Projektname% Kunde" 
06.
 
07.
C:\Programme\WinZip\wzzip.exe -a -ex -r -p %Projektname_Neu% %Quelle% 
08.
 


also mit einem kleinem "-p" !!

Habe aber noch eine Frage

Ich übergebe der Batchdatei ja über "Rechte Maustaste - Senden an" den komplaten Pfad mit Dateiname: "D:\Projekte\0705010 Kunde 1.zip" der dann ja im Parameter %1 liegt.

Ist es möglich den Pfad der der Datei herauszufinden?
Also in dem Beispiel: "D:\Projekte\"

Danke und Gruss

Hausen
Bitte warten ..
Mitglied: bastla
05.01.2009 um 14:13 Uhr
Hallo Hausen!

Den Pfad (inkl Laufwerk) erhältst Du mit
%~dp1
Näheres dazu: "for /?" (ziemlich am Ende; das für %I Gezeigte gilt auch für die Parameter %0 bis %9)

Grüße
bastla
Bitte warten ..
Mitglied: Hausen
05.01.2009 um 15:21 Uhr
Hallo zusammen,

so es ist geschafft! Meine kleine Batch macht alles was ich wollte
Danke an alle die mir so gut geholfen haben.

Zur Info hier mal meine Batch:

01.
Title=Projekt ohne Quellen speichern 
02.
 
03.
:: Quellordner ermitteln 
04.
for /F %%i in (%1) do set "Quellordner=%~dp1" 
05.
 
06.
:: Datei entzippen 
07.
set Quelle=%1 
08.
set Ziel="D:\Projekte\Sonstige Arbeiten\Temp\OhneQuellen" 
09.
 
10.
C:\Programme\WinZip\Wzunzip.exe -d %Quelle% %Ziel% 
11.
 
12.
:: Ordnernamen ermitteln 
13.
for /d %%i in (%Ziel%\*.*) do set "Projektname=%%~nxi" 
14.
 
15.
:: Quellen löschen 
16.
rmdir /s /q %Ziel%"\%Projektname%\s7asrcom" 
17.
 
18.
:: Ordner umbenennen 
19.
ren %Ziel%"\%Projektname%" "%Projektname% [Kunde]" 
20.
 
21.
:: Datei zippen 
22.
set Quelle="D:\Projekte\Sonstige Arbeiten\Temp\OhneQuellen" 
23.
set Projektname_Neu="%Quellordner%\%Projektname% [Kunde]" 
24.
 
25.
C:\Programme\WinZip\wzzip.exe -a -ex -r -p %Projektname_Neu% %Quelle% 
26.
 
27.
:: Entzippte (alte) Datei löschen 
28.
rmdir /s /q %Quelle%"\%Projektname% [Kunde]"
Gruss Hausen
Bitte warten ..
Mitglied: bastla
05.01.2009 um 15:29 Uhr
Hallo Hausen!

Noch eine Anmerkung zur letzten Zeile: Falls "wzzip.exe" einen definierten Errorlevel liefert, könntest Du diesen verwenden, um nur bei erfolgreichem Entpacken der Datei die alten Daten zu löschen - etwa so:
if not errorlevel 1 rd /s /q %Quelle%"\%Projektname% [Kunde]"
oder
if errorlevel 1 ( 
    echo Fehler beim Entpacken! 
    pause>nul 
    goto :eof 
rd /s /q %Quelle%"\%Projektname% [Kunde]"
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Dateiname entsprechend einem um x-Ebenen übergeordeten Ordnernamen umbenennen (3)

Frage von Booster07 zum Thema Batch & Shell ...

C und C++
String einlesen in Array und wieder ausgeben von hinten (4)

Frage von Protected zum Thema C und C ...

VB for Applications
gelöst Mehrere CSV Dateien aus verschiedenen Ordner einlesen via VBA (12)

Frage von mtufangil zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...