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

Batch Nur bestimmte Ordner einlesen

Frage Entwicklung Batch & Shell

Mitglied: Breiti1

Breiti1 (Level 1) - Jetzt verbinden

19.04.2011 um 08:44 Uhr, 4988 Aufrufe, 35 Kommentare

Hallo zusammen,
ich habe folgendes Problem:
ich will mit Hilfe einer Batch-Datei eine Ordnerstruktur mit allen Dateien einlesen. Ausgabe erfolgt in eine nsh-Datei.
Das Einlesen sieht wie folgt aus (bzw. die Ordnerstruktur):

Produkt_1
1: .svn (vesteckter Ordner)
1.1: prop-base
1.2: tmp
1.3: ...
2: de
2.1: .svn (vesteckter Ordner)
2.1.1: prop-base
2.1.2: tmp
2.1.3: ...
2.2: FC
2.2.1: .svn (vesteckter Ordner)
2.2.1.1: prop-base
2.2.1.2: tmp
2.2.1.3: ...
2.2.2: 001.jpg
2.2.3: 002.jpg
2.2.4: 003.htm
2.2.5: ...
2.3: JU
2.3.1: .svn (vesteckter Ordner)
2.3.1.1: prop-base
2.3.1.2: tmp
2.3.1.3: ...
2.3.2: 001.jpg
2.3.3: 002.jpg
2.3.4: 003.htm
2.3.5: ...
2.4: ...
3: en
3.1: ...
und ab und zu so:

Produkt_2
1: .svn (vesteckter Ordner)
1.1: prop-base
1.2: tmp
1.3: ...
2: de
2.1: .svn (vesteckter Ordner)
2.1.1: prop-base
2.1.2: tmp
2.1.3: ...
2.2: Datei1
2.3: Datei2
2.4: Datei3
2.5: ...
3: en
3.1: ...

So in der Art sieht die Struktur aus.
Nun würd ich gern, dass alle Ordner in der nsh-Datei gespeichert werden, bis auf die .svn-Ordner.
Diese würde ja gehen mit dem Attribut (und dem DIR-Befehl) /S /B /A:-H (zeigt nur Dateien an die nicht Versteckt sind), jedoch werden die Ordner .svn immernoch angezeigt (zumindest die Dateien darin).
Wie kann ich das verhindern? Mit einer if-Anweisung und exclude?
MfG Flo
PS: vielen Dank für eure Hilfe
35 Antworten
Mitglied: 99045
19.04.2011 um 09:31 Uhr
Hallo und willkommen im Forum.

Die Ausgabe der Ordnerliste ohne die versteckten Ordner könntest du mit findstr filtern:

01.
  
02.
dir /s /b /a-d  {Pfad} | findstr /i /v .svn
Das Ganze packst du dann anschließend in eine FOR-Schleife und falls du damit Probleme haben solltest, kannst du uns deinen Versuch ja mal posten, aber bitte in Code-Tags ( -> Formatierungshilfe)

Gruß
Bitte warten ..
Mitglied: Flohsch
19.04.2011 um 09:41 Uhr
Hallo Flo,

hättest du gerne ausschließlich Ordner oder auch die darin befindlichen Dateien?

Ich würde so etwas mit der Powershell abfackeln. Mit get-childitem werden versteckte Ordner und Dateien nicht angezeigt.

Ausschließlich Ordner:
get-childitem -recurse <Laufwerk\Produkt_1> | where-object {$_.Mode -eq "d----"} | select name | out-file <Pfad\out-file.nsh>

Ordner und Dateien
get-childitem -recurse <Laufwerk\Produkt_1> | select name | out-file <Pfad\out-file.nsh>

Grüße
Flo
Bitte warten ..
Mitglied: 99045
19.04.2011 um 10:07 Uhr
Hi,

ich würde erst mal wissen wollen, welches OS der TO verwendet und ob er die PowerShell kennt und überhaupt installiert hat, bevor ich Empfehlungen dazu gebe.

Herr, lass Hirn regnen .......
Bitte warten ..
Mitglied: Breiti1
19.04.2011 um 10:09 Uhr
Hallo Kaputtnnick,

es ist scho dass ich nach dem dritten Forum endlich mal eine Antwort bekomme mit der ich was anfangen kann

Mein Code sieht wie folgt aus:
01.
FOR dir /s /b /a-d  (D:\FBR\Doc\files\Doc\%PRODUCT_NAME%) | findstr /i /v .svn DO >> echo
Vielen Dank schon mal für deine Hilfe.
MfG Flo
Bitte warten ..
Mitglied: Skyemugen
19.04.2011 um 10:17 Uhr
Aloha Flo,

ich denke, du solltest dir noch einmal die Syntax zur For-Schleife anschauen, am Einfachsten per for /?, denn so wird das nichts (das Tutorial zur For-Schleife wurde ja bereits verlinkt).
Aber da ich dir auch gleich den Weg weisen möchte, noch der Hinweis, dass
dir /s /b /a-d  "D:\FBR\Doc\files\Doc\%PRODUCT_NAME%" ^| findstr /i /v .svn
den Befehl in der Schleife darstellt.

greetz André
Bitte warten ..
Mitglied: 99045
19.04.2011 um 10:20 Uhr
Hi, Breiti1,

01.
> FOR dir /s /b /a-d  (D:\FBR\Doc\files\Doc\%PRODUCT_NAME%) | findstr /i /v .svn DO >> echo 
02.
> 

So wird das nichts. Das Tutorial hast du wohl nicht richtig gelesen?
Zu einer For-Schleife gehört auch eine Schleifenvariable. Du musst den Code berichtigen:

01.
set PRODUCT_NAME=DeinProductName 
02.
 
03.
FOR /F %a in ('dir /s /b /a-d  D:\FBR\Doc\files\Doc\%PRODUCT_NAME% ^| findstr /i /v .svn')  DO @echo %a
für die Eingabe in der Konsole. Wenn du das im Batch ausführen lässt, müssen die Prozentzeichen für Schleifenvariablen verdoppelt werden.
Für die Ausgabe in eine Liste, die du dir hinterher erst einmal ansehen kannst, musst du @echo %a in > irgendeineliste.txt ändern

Aber bitte beschäftige dich erst einmal für die Grundlagen mit dem For-Tutorial, wenigstens mal durchlesen.

Gruß

Edit: Apostroph am Ende vergessen.
Bitte warten ..
Mitglied: 60730
19.04.2011 um 10:21 Uhr
Moin,

edit
wer lesen kann ist klar im Vorteil - mea culpa
Nun würd ich gern, dass alle Ordner in der nsh-Datei gespeichert werden, bis auf die .svn-Ordner.
/edit
Bitte warten ..
Mitglied: Skyemugen
19.04.2011 um 10:28 Uhr
Aloha T-Mo,

ich denke eigentlich auch, dass er sowohl Dateien wie Verzeichnisse will, er will aber nicht den .svn-Ordner (daher auch das findstr /v [das stellt wohl keine Dateiendung dar(?)] ach du hast deinen falschen Pfad ja schon gelöscht ^_^ aber naja, soll er sich noch mal äußern
ich will mit Hilfe einer Batch-Datei eine Ordnerstruktur mit allen Dateien einlesen.
oder
Nun würd ich gern, dass alle Ordner in der nsh-Datei gespeichert werden, bis auf die .svn-Ordner.
?

greetz André
Bitte warten ..
Mitglied: Breiti1
19.04.2011 um 10:39 Uhr
Hey leute,

ich bin gerade dabei mir die For-Schleifen durchzulesen.
Aber damit ihr mein Problem versteht>
Ich will alle Ordner und Dateien einlesen, bis auf die des Ordners .svn
Der Ordner .svn befindet sich aber in jedem Ordner der Struktur. (z.B. in dem Ordner de oder FC oder JU...)
Ich hoffe ihr versteht es jetzt
Viel Dank schon mal
Gruß Flo
Bitte warten ..
Mitglied: miniversum
19.04.2011 um 11:16 Uhr
Hallo

Sind denn die Nummern Teile des Ordnernamens?
Wenn ja dann gehts doch auch ohne For Schleife:
dir /s /b | find /v "/1"
über alle Profuktordner.

miniversum
Bitte warten ..
Mitglied: Breiti1
19.04.2011 um 11:24 Uhr
Also, wenn ich jetzt
01.
set PRODUCT_NAME=Product 
02.
 
03.
FOR /F %a in ('dir /s /b /a-d  D:\FBR\Doc\files\Doc\%PRODUCT_NAME% ^| findstr /i /v .svn')  DO @echo %a
in der cmd eintippe macht er genau das was er soll
in einer Batch Datei müsste der Code dann wie folg lauten:
01.
set PRODUCT_NAME=Product 
02.
 
03.
FOR /F %%a in ('dir /s /b /a-d  D:\FBR\Doc\files\Doc\%PRODUCT_NAME% ^| findstr /i /v .svn')  DO @echo %%a
Wenn ich diesen jedoch ausführe, zeit er mir folgendes an.
01.
Der Befehl "'dir" ist entweder falsch geschrieben oder 
02.
konnte nicht gefunden werden. 
03.
Der Befehl "/s" ist entweder falsch geschrieben oder 
04.
konnte nicht gefunden werden. 
05.
Der Befehl "/b" ist entweder falsch geschrieben oder 
06.
konnte nicht gefunden werden. 
07.
Der Befehl "/a-d" ist entweder falsch geschrieben oder 
08.
konnte nicht gefunden werden. 
09.
Der Befehl "D:\FBR\Fendt_Doc\files\FendiasDoc\200Vario" ist entweder falsch gesc 
10.
hrieben oder 
11.
konnte nicht gefunden werden. 
12.
Der Befehl "|" ist entweder falsch geschrieben oder 
13.
konnte nicht gefunden werden. 
14.
FINDSTR: Syntaxfehler 
15.
Der Befehl "/i" ist entweder falsch geschrieben oder 
16.
konnte nicht gefunden werden. 
17.
Der Befehl "/v" ist entweder falsch geschrieben oder 
18.
konnte nicht gefunden werden. 
19.
Der Befehl ".svn" ist entweder falsch geschrieben oder 
20.
konnte nicht gefunden werden.
MfG Flo
Bitte warten ..
Mitglied: Breiti1
19.04.2011 um 11:29 Uhr
hey,
nein die Nummer gehörn nicht dazu. Ich hab die nur mal zur Orientierung hin geschrieben.

MfG Flo
Bitte warten ..
Mitglied: 99045
19.04.2011 um 11:31 Uhr
Die doppelten Prozentzeichen darfst du nur innerhalb einer Batchdatei verwenden. Der Befehl wird bei mir ohne Fehler ausgeführt.
Bitte warten ..
Mitglied: miniversum
19.04.2011 um 11:37 Uhr
ok dann halt so:
dir /s /b | find /v "\.svn"
Bitte warten ..
Mitglied: Breiti1
19.04.2011 um 11:55 Uhr
ok das ist scho fast perfekt!

nur zwei kleinere sachen wären noch von Vorteil:
1: Wenn möglich sollte noch folgendes ausgegeben werden, bevor die Dateien ausgeben werden.
CreateDirectory $INSTDIR\Dokumentation\%Product%\de (Dieser ordner enthält nur Ordner, also kein SetOutPath)
CreateDirectory $INSTDIR\Dokumentation\%Product%\de\FC (in dem Ordner sind Dateien drin also SetOutPath...)
SetOutPath $INSTDIR\Dokumentation\%Product%\de\FC
und dann kommen die Dateien in dem Ordner
dann folgt der Nächste Ordner.

2: der Dateipfad wird im moment noch komlett in der ausgabe datei angezeigt, wenn möglich sollte dieser aber erst ab %Product%\de\... angezeigt werden


MfG Flo
Bitte warten ..
Mitglied: Skyemugen
19.04.2011 um 11:58 Uhr
Aloha miniversum,

stimmt eigentlich ...

jetzt bleibt sich noch die Frage, ob er Umlaute hat ...

Und was sich mir vorallem noch nicht geklärt hat, ob
01.
@echo off & setlocal 
02.
set "PRODUCT_NAME=Product" 
03.
chcp 1252>nul 
04.
(dir /s /b "D:\FBR\Doc\files\Doc\%PRODUCT_NAME%" | find /v "\.svn" && chcp 850>nul) >D:\Pfad\test.nsh 
05.
goto :eof
ihm diese Ausgabe nach seinen vorstellungen strukturiert genug ist ... denn es ist ja ebenenweise und nach dem EP gehend, hätte ich gedacht, er möchte es verzeichnisweise ... hm

greetz André

edit: @99045: willkommen bei administrator.de because some things never change *lach* - man gewöhnt sich daran
Bitte warten ..
Mitglied: 99045
19.04.2011 um 11:59 Uhr
Ich steig hier aus. Das nächste Mal spezifizierst du bitte deine Anforderungen gleich im Eröffnungsbeitrag, und zwar so, dass sie eindeutig sind.
Bitte warten ..
Mitglied: Breiti1
19.04.2011 um 13:00 Uhr
ja sorry. des is mir grad noch eingefallen!
is sowas nicht möglich oder?
MfG Flo
Bitte warten ..
Mitglied: Biber
19.04.2011 um 13:36 Uhr
[OT]
Moin Breiti1,

willkommen im Forum.
Zitat von Breiti1:
ja sorry. des is mir grad noch eingefallen!
is sowas nicht möglich oder?
Doch, möglich ist es schon...
Aber wirklich nicht nötig.

Wenn dir solche "Kleinigkeiten" nach dem gefühlten 27sten Antwortkommentar einfallen->bitte nächstes Mal einfach runterschlucken.

Du hast bestimmt vier oder fünf der hier Mitpostenden zum lauten Schreien gebracht.

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: Breiti1
19.04.2011 um 13:49 Uhr
Hallo Biber

Zitat von Biber:
Doch, möglich ist es schon...

und wie?

tut mir leid wegen dem Schreien
MfG Flo
Bitte warten ..
Mitglied: Breiti1
19.04.2011 um 14:46 Uhr
ok jetzt funktioniert auch dieser Code in der Batch file!
kann ich hier die zwei punkte von unten noch mit einbauen? (ich probier auch grad rum!)
MfG Flo
Bitte warten ..
Mitglied: Biber
19.04.2011 um 18:27 Uhr
Moin Breiti,

Zitat von Breiti1:
Hallo Biber

> Zitat von Biber:
> ----
> Doch, möglich ist es schon...

und wie?
Ja nee - ich meinte eigentlich, es ist natürlich möglich, dass dir kurz vor dem letzten abschliessenden Feinschliff noch mal eben einfällt,
dass es eigentlich ganz anders aussehen müsste.

So etwas erlebe ich jeden Tag beim Bäcker - da stehen Menschen mit mir zusammen geduldig in einer 20-Personen-Schlange,
und wenn die endlich dran sind, dann sagen die "Hmm ja, ich muss erst mal gucken, ...".

Zurück zu deinem kleinen Ver- und Entwirrspiel:

Du müsstest deinen Einzeiler aus den Kommentaren von heute mittag noch - für jeden einzelne %produkt_name% - etwas erweitern.
Ziel sollte sein, den Pfad von "Lw-Buchstabe:" bis "Unterordner %Produkt_name%" einschließlich kurzzeitig als SUBST--Laufwerk zu mappen.

Sinngemäß funktioniert es bei meinen eclipse/svn-Projekten und einem verfügbaren Laufwerksbuchstaben O: bei mir so:
[ Unterstellt: vorher ist gestzt SET "rootpfad=D:\FBR\Doc\files\Doc" ]
01.
>for /d %i in ("%rootpfad%\*") do @subst o: "%rootpfad%\%~nxi" &  (for /f "delims=\ tokens=1,*" %j in ('dir /s /b o:\ ^| findstr /i /v svn') do @echo %k) & subst o: /d
... vom CMD-Prompt aus.

In meinem $rootpfad% steht etwas, was deinem "D:\FBR\Doc\files\Doc" entspricht, die Laufvariable %i bei mir durchläuft alle %PRODUCT_NAME% bei dir.

In einem Batch kannst du ja mehrere Zeilen daraus machen und auch an den richtigen Stellen noch ein "echo CreateDirectory $INSTDIR\Dokumentation" usw. dazwischenkopieren.

NUR SINNGEMÄSS und ungetestet im Batch
01.
SET "rootpfad=........" 
02.
 
03.
FOR /d %%i in ("%rootpfad%\*") do ( 
04.
         subst o: "%rootpfad%\%%~nxi"  
05.
 
06.
        REM der ECHO-Vorspann......  
07.
         REM echo bla.... 
08.
         FOR  /F "delims=\ tokens=1,*" %%j in ('dir /s /b o:\ ^| findstr /i /v svn') do ( 
09.
                  echo %%k 
10.
11.
       subst o: /d 
12.
13.
 
14.
REM der Abspann
Grüße
Biber

P.S.
tut mir leid wegen dem Schreien
Nein, wegen des Schreiens.
Und das braucht es nicht - bloss nicht öfters machen bitte.
Bitte warten ..
Mitglied: Breiti1
20.04.2011 um 08:58 Uhr
Hallo Biber,

der Code ist fast perfekt. Vielen vielen Dank schon mal.
Es ist nur noch eine Kleinigkeit die ich selber noch nicht hinbekommen hab. (hab ich aber scho erwähnt )
wie mach ich das, dass er mir bei CreateDirectory $INSTDIR\Dokumentation\% PRODUCT_NAME %\de\FC den aktuell (hier FC) bearbeitenden Ordner ausgibt bzw. hinschreibt? und er gibt mir bei der Ausgabe nicht den „ganzen“ Dateipfad aus (also ich mein „Produkt\DE\FC“ soll ausgegeben werden, Produkt\FC wird aber ausgegeben!).

Dies is mein derzeitiger Code:
01.
  
02.
@ echo off 
03.
SET /p "PRODUCT_NAME=Geben sie den Produkt Namen ein:  
04.
 
05.
SET "rootpfad=D:\FBR\Fendt_Doc\files\FendiasDoc\%PRODUCT_NAME%" 
06.
 
07.
FOR /d %%i in ("%rootpfad%\*") do (  
08.
         subst o: "%rootpfad%\%%~nxi"   
09.
 
10.
	>> test.nsh echo CreateDirectory $INSTDIR\Dokumentation\ 
11.
 
12.
         FOR  /F "delims=\ tokens=1,*" %%j in ('dir /s /b o:\ ^| findstr /i /v svn') do (  
13.
                  >> test.nsh echo %PRODUCT_NAME%\%%k  
14.
        )  
15.
       subst o: /d  
16.
)  
17.
 
18.
pause
funktioniert ansonsten Prima.
Gruß Flo
Bitte warten ..
Mitglied: Breiti1
20.04.2011 um 10:10 Uhr
ok ein Problem gelöst.
Jetzt nur noch das mit:
wie mach ich das, dass er mir bei CreateDirectory $INSTDIR\Dokumentation\%PRODUCT_NAME%\de\FC den aktuell (hier FC) bearbeitenden Ordner ausgibt bzw. hinschreibt?

MFG Flo
PS: nach diesem wärs dann erledigt!
Bitte warten ..
Mitglied: Biber
20.04.2011 um 10:16 Uhr
Moin Breiti1,


öhmm, da kann ich dir nicht folgen... bzw. da bin ich nicht sicher, ob ich das richtige Bild von deiner Verzeichnisstruktur habe.

Wenn ich dich richtig verstehe, dann führt dir Zeile 13 deines Schnipsels....
 >> test.nsh echo %PRODUCT_NAME%\%%k  
.. zu der Ausgabe "Produkt\FC" statt "Produkt\de\FC" ??
Dann setz doch dort ein "de\" rein.... oder guck ich grad an der falschen Stelle?

Sonst wäre meine Bitte
  • poste mal eine angedeutete Skizze der Verzeichnisstruktur [ mit DIR /b /s /AD erzeugt, nur die ersten zwei Ordnerebenen]
  • Einen skizzerten Output, so wie er jetzt rausfällt
  • Einen skizzerten Output, so wie er rausfallen soll.

Grüße
Biber
Bitte warten ..
Mitglied: Breiti1
20.04.2011 um 10:30 Uhr
Moin Biber,

dieses Problem hab ich mit
01.
                  >> test.txt echo %PRODUCT_NAME%\%%~nxi\%%k 
gelöst.

Ich will jetzt nur noch, dass er es wie folgt ausgibt:

Infotext....
CreateDirectory $INSTDIR\Dokumentation\Produkt\de

CreateDirectory $INSTDIR\Dokumentation\Produkt\de\FC
SetOutPath $INSTDIR\Dokumentation\Produkt\de\FC
Produkt\de\FC\I000114.jpg
Produkt\de\FC\I000114.png
Produkt\de\FC\I000115.jpg
Produkt\de\FC\I000115.png
Produkt\de\FC\I000121.jpg
... (bis alle Dateien diese Ordners ausgegeben sind)

CreateDirectory $INSTDIR\Dokumentation\Produkt\de\JU
SetOutPath $INSTDIR\Dokumentation\Produkt\de\JU
Produkt\de\JU\I000114.jpg
Produkt\de\JU\I000114.png
Produkt\de\JU\I000115.jpg
Produkt\de\JU\I000115.png
Produkt\de\JU\I000121.jpg
... (bis alle Dateien diese Ordners ausgegeben sind)

CreateDirectory $INSTDIR\Dokumentation\Produkt\de\LdB
SetOutPath $INSTDIR\Dokumentation\Produkt\de\LdB
Produkt\de\LdB\I000114.jpg
Produkt\de\LdB\I000114.png
Produkt\de\LdB\I000115.jpg
Produkt\de\LdB\I000115.png
Produkt\de\LdB\I000121.jpg
... (bis alle Dateien diese Ordners ausgegeben sind)

CreateDirectory $INSTDIR\Dokumentation\Produkt\fr

CreateDirectory $INSTDIR\Dokumentation\Produkt\fr\FC
SetOutPath $INSTDIR\Dokumentation\Produkt\fr\FC
Produkt\de\FC\I000114.jpg
Produkt\de\FC\I000114.png
Produkt\de\FC\I000115.jpg
Produkt\de\FC\I000115.png
Produkt\de\FC\I000121.jpg
... (bis alle Dateien diese Ordners ausgegeben sind)


und so weiter...

es soll praktisch immer, bevor die Dateien des Ordners ausgegeben werden, das CreateDirectory.. und das SetOutPath ... ausgeben.

Ich hoffe jetzt kann man es besser verstehen!

MfG Flo
Bitte warten ..
Mitglied: Skyemugen
20.04.2011 um 11:30 Uhr
Aloha,

mal zwei Sachen am Rande:

- das
findstr /i /v svn
greift doch hier nur für Dateinamen - das Verzeichnis wird in diesem Fall doch nur nicht aufgelistet, weil es versteckt ist ...

- die Ausgabe der Struktur sieht doch momentan so aus, dass die Ordner der Ebene nach geordnet werden ... ist das die gewollte Struktur von Flo?

CreateDirectory $INSTDIR\Dokumentation\Produkt_1\de 
Produkt_1\de\FC 
Produkt_1\de\JU 
Produkt_1\de\FC\de_fc_001.txt 
Produkt_1\de\FC\de_fc_002.txt 
Produkt_1\de\JU\de_ju_001.txt 
Produkt_1\de\JU\de_ju_002.txt 
CreateDirectory $INSTDIR\Dokumentation\Produkt_1\en 
Produkt_1\en\FC 
Produkt_1\en\JU 
Produkt_1\en\FC\en_fc_001.txt 
Produkt_1\en\FC\en_fc_002.txt 
Produkt_1\en\JU\en_ju_001.txt 
Produkt_1\en\JU\en_ju_002.txt
dachte, es soll am Ende eher so aussehen:

CreateDirectory $INSTDIR\Dokumentation\Produkt_1\de 
Produkt_1\de\FC 
Produkt_1\de\FC\de_fc_001.txt 
Produkt_1\de\FC\de_fc_002.txt 
Produkt_1\de\JU 
Produkt_1\de\JU\de_ju_001.txt 
Produkt_1\de\JU\de_ju_002.txt 
CreateDirectory $INSTDIR\Dokumentation\Produkt_1\en 
Produkt_1\en\FC 
Produkt_1\en\FC\en_fc_001.txt 
Produkt_1\en\FC\en_fc_002.txt 
Produkt_1\en\JU 
Produkt_1\en\JU\en_ju_001.txt 
Produkt_1\en\JU\en_ju_002.txt
? Oder sehe ich hier etwas falsch?

greetz André
Bitte warten ..
Mitglied: Breiti1
20.04.2011 um 11:56 Uhr
du hast es fast verstanden :

so soll es aussehen:

01.
CreateDirectory $INSTDIR\Dokumentation\Produkt_1\de  
02.
 
03.
CreateDirectory $INSTDIR\Dokumentation\Produkt_1\de\FC 
04.
SetOutPath $INSTDIR\Dokumentation\ Produkt_1\de\FC 
05.
Produkt_1\de\FC\de_fc_001.txt  
06.
Produkt_1\de\FC\de_fc_002.txt  
07.
 
08.
CreateDirectory $INSTDIR\Dokumentation\Produkt_1\de\ JU 
09.
SetOutPath $INSTDIR\Dokumentation\ Produkt_1\de\ JU 
10.
Produkt_1\de\JU\de_ju_001.txt  
11.
Produkt_1\de\JU\de_ju_002.txt  
12.
 
13.
CreateDirectory $INSTDIR\Dokumentation\Produkt_1\en  
14.
 
15.
CreateDirectory $INSTDIR\Dokumentation\Produkt_1\en\FC 
16.
SetOutPath $INSTDIR\Dokumentation\ Produkt_1\en\FC 
17.
Produkt_1\en\FC\en_fc_001.txt  
18.
Produkt_1\en\FC\en_fc_002.txt  
19.
 
20.
CreateDirectory $INSTDIR\Dokumentation\Produkt_1\en\JU 
21.
SetOutPath $INSTDIR\Dokumentation\ Produkt_1\en\JU 
22.
Produkt_1\en\JU\en_ju_001.txt  
23.
Produkt_1\en\JU\en_ju_002.txt
also sowas wie „Produkt_1\de\FC“ soll nicht angezeigt werden. dafür aber:
CreateDirectory $INSTDIR\Dokumentation\Produkt_1\de\FC
SetOutPath $INSTDIR\Dokumentation\ Produkt_1\de\FC

also eher wie das zweite.
Der Rest klappt soweit ganz gut!

MfG Flo
Bitte warten ..
Mitglied: Skyemugen
20.04.2011 um 13:58 Uhr
Aloha Flo,

also dann so: (?)
01.
@echo off 
02.
SET /p "PRODUCT_NAME=Geben sie den Produkt Namen ein: " 
03.
SET "rootpfad=D:\FBR\Fendt_Doc\files\FendiasDoc\%PRODUCT_NAME%" 
04.
SET "LOG=D:\FBR\Fendt_Doc\files\FendiasDoc\%PRODUCT_NAME%\test.nsh" 
05.
if exist %LOG% del %LOG% 
06.
 
07.
for /f "delims=" %%a in ('dir /b /ad "%rootpfad%" ^|findstr /i /v "svn"') do call :Ablauf "%%a" 
08.
pause 
09.
goto :eof 
10.
 
11.
:Ablauf 
12.
(echo( 
13.
echo CreateDirectory $INSTDIR\Dokumentation\%PRODUCT_NAME%\%~1)>>%LOG% 
14.
pushd "%rootpfad%\%~1" 
15.
for /f "delims=" %%d in ('dir /b /a-d') do echo %PRODUCT_NAME%\%~1\%%d >>%LOG% 
16.
for /f "delims=" %%b in ('dir /b /ad ^|findstr /i /v "svn"') do call :Ablauf2 "%%b" "%~1" 
17.
popd 
18.
goto :eof 
19.
 
20.
:Ablauf2 
21.
(echo( 
22.
echo CreateDirectory $INSTDIR\Dokumentation\%PRODUCT_NAME%\%~2\%~1 
23.
echo SetOutPath $INSTDIR\Dokumentation\%PRODUCT_NAME%\%~2\%~1)>>%LOG% 
24.
pushd "%rootpfad%\%~2\%~1" 
25.
for /f "delims=" %%c in ('dir /b /a-d') do echo %PRODUCT_NAME%\%~2\%~1\%%c >>%LOG% 
26.
popd 
27.
goto :eof
... garantiert umständlich, sollte aber seine Dienste tun
wenn jemand fragt, ob ich für jede Unterebene einen neuen Ablauf hinzufügen würde ... heute wahrscheinlich schon, groß Denken ist momentan nicht - Schuhe drücken wie sau ~.~

greetz André

EDIT bollocks ... wenn ich mir deine Struktur für Produkt_2 im EP ansehe, passt das natürlich so nicht ^_^ (bekommst dann nämlich keine Dateien unter de, en, fr etc, angezeigt) - ups da muss noch was dazu
edit² jetzt auch mit der ab und zu-Variante
edit³ fehlendes findstr hinzugefügt

hoffe, das passt noch so in deine Strukturvorstellung:

CreateDirectory $INSTDIR\Dokumentation\Produkt_2\de 
Produkt_2\de\de.txt 
 
CreateDirectory $INSTDIR\Dokumentation\Produkt_2\de\FC 
SetOutPath $INSTDIR\Dokumentation\Produkt_2\de\FC 
Produkt_2\de\FC\de_fc_001.txt  
Produkt_2\de\FC\de_fc_002.txt   
 
CreateDirectory $INSTDIR\Dokumentation\Produkt_2\de\JU 
SetOutPath $INSTDIR\Dokumentation\Produkt_2\de\JU 
Produkt_2\de\JU\de_ju_001.txt  
Produkt_2\de\JU\de_ju_002.txt  
 
CreateDirectory $INSTDIR\Dokumentation\Produkt_2\en 
 
CreateDirectory $INSTDIR\Dokumentation\Produkt_2\en\FC 
SetOutPath $INSTDIR\Dokumentation\Produkt_2\en\FC 
Produkt_2\en\FC\en_fc_001.txt  
Produkt_2\en\FC\en_fc_002.txt  
 
CreateDirectory $INSTDIR\Dokumentation\Produkt_2\en\JU 
SetOutPath $INSTDIR\Dokumentation\Produkt_2\en\JU 
Produkt_2\en\JU\de_ju_001.txt  
Produkt_2\en\JU\de_ju_002.txt 
Bitte warten ..
Mitglied: Breiti1
20.04.2011 um 14:41 Uhr
vielen vielen dank
passt perfekt.
er gibt mir nur noch einmal pro Sprache folgendes aus:
01.
CreateDirectory $INSTDIR\Dokumentation\PRODUCT\de\.svn 
02.
SetOutPath $INSTDIR\Dokumentation\PRODUCT\de\.svn 
03.
PRODUCT\de\.svn\Datei 
04.
PRODUCT\de\.svn\Datei
aus! ich schau grad wie ich das noch wegbekomm!
Gruß Flo
Bitte warten ..
Mitglied: Skyemugen
20.04.2011 um 15:00 Uhr
Aloha Flo,

my mistake, habe übersehen, dass du auch in den Unterordnern svn hast ^_^

füge einfach bei :Ablauf in der zweiten for-Schleife so wie bei der oberen Hauptschleife das
^|findstr /i /v "svn"
mit ein, das sollte das Problem aus der Welt schaffen *pfeif* hab's oben nachgetragen

greetz André
Bitte warten ..
Mitglied: Breiti1
20.04.2011 um 15:19 Uhr
top jetzt läufts!!

gruß Flo
Bitte warten ..
Mitglied: smatie
01.07.2011 um 09:00 Uhr
ich will auch so eine Datei anlegen, die mir eine Ordnerstruktur ausgiebt.
Diese sieht wie folgt aus:
ich habe einen Ordner in dem Einige Produkte drin sind. Nun soll jeder ordner in der Datei wie oben aufgelistet werden. Ich habe aber keine .svn Ordner.
Ich würde gern, dass auch wie oben erst CreateDirectory $INSTDIR\Dokumentation\dann das Produkt und die darauf folgenden Unterordner ausgegeben werden, ebenso SetOutPath...
bei mir ist nur das Problem dass ich einen Unterordner mehr habe, also oben, da bei mir ja mehrere Produkte auf einmal ausgegeben werden.
Das wäre der erste Teil. Der zweite ware, dass nicht mehr alle Unterordner ausgegeben werden, sonderen nur die Bilder (Es sind meistens drei Ordner mit Bildern) und z.B der Ordner Deutsch (dort sind auch unterordner drin, wie oben).
Ist sowas möglich? Ich hab schon mal probiert aus dem Code von oben das hinzubekommen, war jedoch noch nicht so erfolgreich. Muss ich da einfach noch einen dritten Ablauf einfügen oder wie?
Gruß Tobi
PS: bin über jede hilfe dankbar
Bitte warten ..
Mitglied: Skyemugen
01.07.2011 um 09:42 Uhr
Aloha,

1. Bitte eröffne einen eigenen Beitrag dazu
2. Öffne cmd gib tree /F "C:\Beispielpfad" ein und markiere die Ausgabe und poste sie in deinem Beitrag,

denn in deinem Gewusel als Text blicke ich nicht so ganz durch, daher die Beschreibung dann bitte auch sauber gliedern, damit man nicht erst 5x nachfragen muss.

Aber das wie gesagt bitte in einem eigenen, neuen Beitrag, dieser hier ist abgeschlossen, danke.

greetz André
Bitte warten ..
Mitglied: smatie
01.07.2011 um 10:32 Uhr
hab nen neuen Beitrag angelegt. Gruß
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch - Datei aus Ordner einlesen mit Ausnahmen! (4)

Frage von Daedrafaction zum Thema Batch & Shell ...

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

Frage von mtufangil zum Thema VB for Applications ...

Windows Server
gelöst Datei per Batch in Ordner mit sich ständig änderndem Namen kopieren (3)

Frage von Drxrey zum Thema Windows Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...