breiti1
Goto Top

Batch Nur bestimmte Ordner einlesen

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

Content-ID: 164843

Url: https://administrator.de/forum/batch-nur-bestimmte-ordner-einlesen-164843.html

Ausgedruckt am: 23.12.2024 um 11:12 Uhr

99045
99045 19.04.2011 um 09:31:03 Uhr
Goto Top
Hallo und willkommen im Forum.

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

 
dir /s /b /a-d  {Pfad} | findstr /i /v .svn

Das Ganze packst du dann anschließend in eine Tutorial zur FOR-Schleife und falls du damit Probleme haben solltest, kannst du uns deinen Versuch ja mal posten, aber bitte in Code-Tags ( -> Formatierungshilfe)

Gruß
Flohsch
Flohsch 19.04.2011 um 09:41:46 Uhr
Goto Top
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
99045
99045 19.04.2011 um 10:07:18 Uhr
Goto Top
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 .......
Breiti1
Breiti1 19.04.2011 um 10:09:13 Uhr
Goto Top
Hallo Kaputtnnick,

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

Mein Code sieht wie folgt aus:
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
Skyemugen
Skyemugen 19.04.2011 um 10:17:56 Uhr
Goto Top
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é
99045
99045 19.04.2011 um 10:20:26 Uhr
Goto Top
Hi, Breiti1,

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

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:

set PRODUCT_NAME=DeinProductName

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.
60730
60730 19.04.2011 um 10:21:03 Uhr
Goto Top
Moin,

edit
wer lesen kann ist klar im Vorteil face-wink - face-wink mea culpa
Nun würd ich gern, dass alle Ordner in der nsh-Datei gespeichert werden, bis auf die .svn-Ordner.
/edit
Skyemugen
Skyemugen 19.04.2011 um 10:28:18 Uhr
Goto Top
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é
Breiti1
Breiti1 19.04.2011 um 10:39:35 Uhr
Goto Top
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
miniversum
miniversum 19.04.2011 um 11:16:11 Uhr
Goto Top
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
Breiti1
Breiti1 19.04.2011 um 11:24:19 Uhr
Goto Top
Also, wenn ich jetzt
set PRODUCT_NAME=Product

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 face-big-smile
in einer Batch Datei müsste der Code dann wie folg lauten:
set PRODUCT_NAME=Product

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.
Der Befehl "'dir" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.
Der Befehl "/s" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.
Der Befehl "/b" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.
Der Befehl "/a-d" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.
Der Befehl "D:\FBR\Fendt_Doc\files\FendiasDoc\200Vario" ist entweder falsch gesc  
hrieben oder
konnte nicht gefunden werden.
Der Befehl "|" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.
FINDSTR: Syntaxfehler
Der Befehl "/i" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.
Der Befehl "/v" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.
Der Befehl ".svn" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.

MfG Flo
Breiti1
Breiti1 19.04.2011 um 11:29:28 Uhr
Goto Top
hey,
nein die Nummer gehörn nicht dazu. Ich hab die nur mal zur Orientierung hin geschrieben.

MfG Flo
99045
99045 19.04.2011 um 11:31:51 Uhr
Goto Top
Die doppelten Prozentzeichen darfst du nur innerhalb einer Batchdatei verwenden. Der Befehl wird bei mir ohne Fehler ausgeführt.
miniversum
miniversum 19.04.2011 um 11:37:59 Uhr
Goto Top
ok dann halt so:
dir /s /b | find /v "\.svn"
Breiti1
Breiti1 19.04.2011 um 11:55:06 Uhr
Goto Top
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
Skyemugen
Skyemugen 19.04.2011 um 11:58:13 Uhr
Goto Top
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
@echo off & setlocal
set "PRODUCT_NAME=Product"  
chcp 1252>nul
(dir /s /b "D:\FBR\Doc\files\Doc\%PRODUCT_NAME%" | find /v "\.svn" && chcp 850>nul) >D:\Pfad\test.nsh  
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
99045
99045 19.04.2011 um 11:59:34 Uhr
Goto Top
Ich steig hier aus. Das nächste Mal spezifizierst du bitte deine Anforderungen gleich im Eröffnungsbeitrag, und zwar so, dass sie eindeutig sind.
Breiti1
Breiti1 19.04.2011 um 13:00:42 Uhr
Goto Top
ja sorry. des is mir grad noch eingefallen!
is sowas nicht möglich oder?
MfG Flo
Biber
Biber 19.04.2011 um 13:36:51 Uhr
Goto Top
[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]
Breiti1
Breiti1 19.04.2011 um 13:49:37 Uhr
Goto Top
Hallo Biber

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

und wie?

tut mir leid wegen dem Schreien :'(
MfG Flo
Breiti1
Breiti1 19.04.2011 um 14:46:07 Uhr
Goto Top
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
Biber
Biber 19.04.2011 um 18:27:54 Uhr
Goto Top
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" ]
>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
SET "rootpfad=........"  

FOR /d %%i in ("%rootpfad%\*") do (  
         subst o: "%rootpfad%\%%~nxi"   

        REM der ECHO-Vorspann...... 
         REM echo bla....
         FOR  /F "delims=\ tokens=1,*" %%j in ('dir /s /b o:\ ^| findstr /i /v svn') do (  
                  echo %%k
        )
       subst o: /d
)

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. face-wink
Breiti1
Breiti1 20.04.2011 um 08:58:40 Uhr
Goto Top
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 face-smile)
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:
 
@ echo off
SET /p "PRODUCT_NAME=Geben sie den Produkt Namen ein:   

SET "rootpfad=D:\FBR\Fendt_Doc\files\FendiasDoc\%PRODUCT_NAME%"  

FOR /d %%i in ("%rootpfad%\*") do (   
         subst o: "%rootpfad%\%%~nxi"    

	>> test.nsh echo CreateDirectory $INSTDIR\Dokumentation\

         FOR  /F "delims=\ tokens=1,*" %%j in ('dir /s /b o:\ ^| findstr /i /v svn') do (   
                  >> test.nsh echo %PRODUCT_NAME%\%%k 
        ) 
       subst o: /d 
) 

pause

funktioniert ansonsten Prima.
Gruß Flo
Breiti1
Breiti1 20.04.2011 um 10:10:55 Uhr
Goto Top
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!
Biber
Biber 20.04.2011 um 10:16:06 Uhr
Goto Top
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
Breiti1
Breiti1 20.04.2011 um 10:30:08 Uhr
Goto Top
Moin Biber,

dieses Problem hab ich mit
                  >> 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
Skyemugen
Skyemugen 20.04.2011 um 11:30:03 Uhr
Goto Top
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é
Breiti1
Breiti1 20.04.2011 um 11:56:15 Uhr
Goto Top
du hast es fast verstanden face-smile:

so soll es aussehen:

CreateDirectory $INSTDIR\Dokumentation\Produkt_1\de 

CreateDirectory $INSTDIR\Dokumentation\Produkt_1\de\FC
SetOutPath $INSTDIR\Dokumentation\ Produkt_1\de\FC
Produkt_1\de\FC\de_fc_001.txt 
Produkt_1\de\FC\de_fc_002.txt 

CreateDirectory $INSTDIR\Dokumentation\Produkt_1\de\ JU
SetOutPath $INSTDIR\Dokumentation\ 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 

CreateDirectory $INSTDIR\Dokumentation\Produkt_1\en\FC
SetOutPath $INSTDIR\Dokumentation\ Produkt_1\en\FC
Produkt_1\en\FC\en_fc_001.txt 
Produkt_1\en\FC\en_fc_002.txt 

CreateDirectory $INSTDIR\Dokumentation\Produkt_1\en\JU
SetOutPath $INSTDIR\Dokumentation\ Produkt_1\en\JU
Produkt_1\en\JU\en_ju_001.txt 
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
Skyemugen
Skyemugen 20.04.2011 um 13:58:07 Uhr
Goto Top
Aloha Flo,

also dann so: (?)
@echo off
SET /p "PRODUCT_NAME=Geben sie den Produkt Namen ein: "  
SET "rootpfad=D:\FBR\Fendt_Doc\files\FendiasDoc\%PRODUCT_NAME%"  
SET "LOG=D:\FBR\Fendt_Doc\files\FendiasDoc\%PRODUCT_NAME%\test.nsh"  
if exist %LOG% del %LOG%

for /f "delims=" %%a in ('dir /b /ad "%rootpfad%" ^|findstr /i /v "svn"') do call :Ablauf "%%a"  
pause
goto :eof

:Ablauf
(echo(
echo CreateDirectory $INSTDIR\Dokumentation\%PRODUCT_NAME%\%~1)>>%LOG%
pushd "%rootpfad%\%~1"  
for /f "delims=" %%d in ('dir /b /a-d') do echo %PRODUCT_NAME%\%~1\%%d >>%LOG%  
for /f "delims=" %%b in ('dir /b /ad ^|findstr /i /v "svn"') do call :Ablauf2 "%%b" "%~1"  
popd
goto :eof

:Ablauf2
(echo(
echo CreateDirectory $INSTDIR\Dokumentation\%PRODUCT_NAME%\%~2\%~1
echo SetOutPath $INSTDIR\Dokumentation\%PRODUCT_NAME%\%~2\%~1)>>%LOG%
pushd "%rootpfad%\%~2\%~1"  
for /f "delims=" %%c in ('dir /b /a-d') do echo %PRODUCT_NAME%\%~2\%~1\%%c >>%LOG%  
popd
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 
Breiti1
Breiti1 20.04.2011 um 14:41:52 Uhr
Goto Top
vielen vielen dank
passt perfekt.
er gibt mir nur noch einmal pro Sprache folgendes aus:
CreateDirectory $INSTDIR\Dokumentation\PRODUCT\de\.svn
SetOutPath $INSTDIR\Dokumentation\PRODUCT\de\.svn
PRODUCT\de\.svn\Datei
PRODUCT\de\.svn\Datei
aus! ich schau grad wie ich das noch wegbekomm!
Gruß Flo
Skyemugen
Skyemugen 20.04.2011 um 15:00:00 Uhr
Goto Top
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é
Breiti1
Breiti1 20.04.2011 um 15:19:21 Uhr
Goto Top
top jetzt läufts!!
face-smile
gruß Flo
smatie
smatie 01.07.2011 um 09:00:31 Uhr
Goto Top
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
Skyemugen
Skyemugen 01.07.2011 um 09:42:30 Uhr
Goto Top
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é
smatie
smatie 01.07.2011 um 10:32:05 Uhr
Goto Top
hab nen neuen Beitrag angelegt. Gruß