tob1as
Goto Top

Batch um Dateien in Unterordnern umzubenennen

Hallo zusammen

Ich hab folgendes Problem:

Ich habe mehrere Ordner mit Subfolder welche *.ok - Dateien drin haben.
Ich brauche, um in Access mit diesen Dateien zu arbeiten sie aber als *.txt.

Ich krieg das mit dem Umbennen mitsamt den Dateien in den Unterordner leider nocht nicht so ganz hin. Mein bisheriger Ansatz:

for /r "D:\WORK\Rechnungstool\Daten" %i in (*.ok) do @echo rename %i %~ni.txt

Habe mir gedacht, wäre evtl. einfacher, wenn ich zuerst alle *.ok-Dateien aus den Ordnern/Unterordnern rauskopiere und danach in einem Verzeichnis alle umbenenne mit demselben Batch.

Habt ihr eine Idee wie ich das mache? Bin Batch-technisch nicht so fit.


Wäre super wenn mir jemand dabei helfen könnte!


Lieber Gruss

Tobias


[Edit Biber] Den beliebten Verschreiber "umzubennen" im Titel hab ich mal "umbannt". [/Edit]

Content-Key: 73961

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

Printed on: April 19, 2024 at 23:04 o'clock

Member: bastla
bastla Nov 20, 2007 at 16:15:33 (UTC)
Goto Top
Hallo tob1as!

Versuch mal
for /f "delims=" %i in ('dir /s /b "D:\WORK\Rechnungstool\Daten\*.ok"') do @ECHO ren "%i" *.txt  

Grüße
bastla
Member: Biber
Biber Nov 20, 2007 at 16:35:33 (UTC)
Goto Top
Moin tob1as,

aber auch Dein geposteter Ansatz klappt bei Pfad/Dateiangaben mit Leerzeichen im Namen,
wenn Du die Zählvariable %i in Anführungszeichen setzt.
[Demo]
for /r "c:\dokumente und Einstellungen" %i in (*.txt) do @ECHO rename "%i" "%~ni.bla"  

Ob es für Access später mal sinnvoller ist, diese Dateien in EINEM Ordner zu haben, ist eine andere Sache.
Wenn es so ist, dann brauchst Du tatsächlich noch eine zweite Anweisung (MOVE "%i" x:\Accesssfiles\").
In einem Schritt kannst Du nicht ein MOVE und ein REN durchziehen.

Grüße
Biber
Member: bastla
bastla Nov 20, 2007 at 16:41:46 (UTC)
Goto Top
@Biber

In einem Schritt kannst Du nicht ein MOVE und ein REN durchziehen.
Eigentlich sollte doch ein
move "D:\WORK\Rechnungstool\Daten\Test.ok" "D:\WORK\Sammel\Test.txt"  
ausreichen (wenn es den Zielordner schon gibt) - oder steh' ich gerade ganz daneben?

Grüße
bastla
Member: Biber
Biber Nov 20, 2007 at 16:51:01 (UTC)
Goto Top
Jepp, bastla,

Du hast Recht.
Mit Wildcards ginge es nicht, wohl aber mit explizitem Namen:
>move xxxtest.xxx d:\work\*.yyy
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.
### geht nicht.
###
>move xxxtest.xxx d:\work\xxxtest.yyy
### Dat geiht.

Also dann doch im einem Rutsch.

Grüße
Biber
Member: Biber
Biber Nov 23, 2007 at 06:57:51 (UTC)
Goto Top
@tob1as

Rückfrage:
Ist Deine Frage beantwortet, gibt es neue Probleme, bist Du schon im Weihnachtsstress...?

Grüße
Biber
Member: tob1as
tob1as Nov 26, 2007 at 08:11:00 (UTC)
Goto Top
Rückfrage:
Ist Deine Frage beantwortet, gibt es neue

Hi Biber

Sorry hatte sehr viel um die Ohren letzte Woche, und zu diesem Problem kamen noch 20000 andere dazu. Erst mal danke für deine Hilfe und deine Geduld!

Hab das mal so ausprobiert ums zu testen mit euren Code-Hilfen:

move "D:\WORK\Rechnungstool\Daten\test.OK" "D:\WORK\Rechnungstool\BatchFiles\Test.txt"  

Das funktioniert prima, und ist schlussendlich genau das was ich möchte.

Jetzt habe ich noch 1 Verständnisfrage:

1. Ich habe eine Batch im Ordner D:\WORK\Rechnungstool\BatchFiles\ und möchte, wenn ich diese ausführe, alle .OK-Dateien der Unterordner 1-12 innerhalb D:\WORK\Rechnungstool\BatchFiles\2006-2017 in EIN D:\WORK\Rechnungstool\BatchFiles\daten.txt kopiert wird. Wie mache ich das genau?

Mein Ansatz ist so:

move "D:\WORK\Rechnungstool\BatchFiles\*\*.OK" "D:\WORK\Rechnungstool\BatchFiles\Test.txt"  

Doch leider funktioniert das noch nicht.

Herzlichen Dank nochmals!
Member: Biber
Biber Nov 26, 2007 at 08:44:17 (UTC)
Goto Top
Moin tob1as,
Sorry hatte sehr viel um die Ohren letzte Woche, ...
Und ich sach' noch: Lass Dich von diesem Weihnachtsrummel verrückt machen...*gg

...und zu diesem Problem kamen noch 20000 andere dazu.
Hab ich nicht schon eine Million Mal gesagt, ihr sollt nicht so übertreiben?

move "D:\WORK\Rechnungstool\BatchFiles\*\*.OK" ..{anywhere}..
Okay, an dieser Stelle sind keine Wildcards erlaubt.
Aber der Ersatz-Befehl ist nur unwesentlich länger:

a) vom CMD-Prompt
 for /D %i in ("D:\WORK\Rechnungstool\BatchFiles\*") do Move "%i\*.OK" ...{anywhere}  

b) im Batch - zwei Prozentzeichen vor den Zählvariablen.
 for /D %%i in ("D:\WORK\Rechnungstool\BatchFiles\*") do Move "%%i\*.OK" ...{anywhere}  

Hilfe zu FOR /D (D=Director's Cut) unter "For /?" am Cmd-Prompt.

Grüße
Biber
Member: tob1as
tob1as Nov 26, 2007 at 09:27:07 (UTC)
Goto Top
Und ich sach' noch: Lass Dich von
diesem Weihnachtsrummel verrückt
machen...*gg
Der beginnt erst face-wink

 for /D %%i in
("D:\WORK\Rechnungstool\BatchFiles\*") do Move "%%i\*.OK" ...{anywhere}  


Sorry, hab noch ein wenig Verständnisschwierigkeiten mit diesem Code-Schnipsel und bekomme das Ganze irgendwie noch nicht so hin wie ich es haben möchte.

Ich habe die Daten ja im D:\WORK\Rechnungstool\BatchFiles\2007-2017 Verzeichnis in den Unterordnern 01-12.

Beispiel: D:\WORK\Rechnungstool\BatchFiles\2007\01


Doch irgendwie kann die Batch nicht auf die Files zugreiffen weil die Struktur in der Batch noch nicht funktioniert.

Habs mal so (und noch über andere Wege) probiert, komme leider noch nicht zum gewünschten Ergebnis:

for /D %%i in ("D:\WORK\Rechnungstool\BatchFiles\*") do Move "%%i\*.OK" "D:\WORK\Rechnungstool\BatchFiles\Test.txt"  

Deine Geduld ist umwerfend, tausend Dank!
Member: Biber
Biber Nov 26, 2007 at 09:41:18 (UTC)
Goto Top
Moin Tob1as,

da hatte ich die Struktur falsch verstanden.
Wenn Dein Beispiel "D:\WORK\Rechnungstool\BatchFiles\2007\01" heißt, dass in 01, 02, 03... die *.OK-Dateien sind, dann:
 for /D %i in ("D:\WORK\Rechnungstool\BatchFiles\2007\*") do Move "%i\*.OK" ...{anywhere}  
Upps, JETZT versteh ich ,glaube ich...
Du hast
D:\WORK\Rechnungstool\BatchFiles\2007
D:\WORK\Rechnungstool\BatchFiles\2008
D:\WORK\Rechnungstool\BatchFiles\2009
und darunter jeweils ...01, 02, 03....

Dann imBatch
for /D %%i in ("D:\WORK\Rechnungstool\BatchFiles\2007\*") do (  
for /D %%j in ("%%i\*") do Move "%%i\%%~nxj\*.OK" ...     
)
Oder einfach mit FOR /R Rekursiv:
 for /R "D:\WORK\Rechnungstool\BatchFiles" %%i in ("*.OK") do move %%i {anywhere}  


Deine Geduld ist umwerfend...
Mehrere Ex-Schwiegermütter im Lauf der Zeit, das trainiert...

Grüße
Biber
Member: tob1as
tob1as Nov 26, 2007 at 10:08:03 (UTC)
Goto Top
Moin Biber

Du hast
D:\WORK\Rechnungstool\BatchFiles\2007
D:\WORK\Rechnungstool\BatchFiles\2008
D:\WORK\Rechnungstool\BatchFiles\2009
und darunter jeweils ...01, 02, 03....

Jep genau!


Oder einfach mit FOR /R Rekursiv:
 for /R
> "D:\WORK\Rechnungstool\BatchFiles"  
> %%i in ("*.OK") do move %%i  
> {anywhere}
> 


Habs jetzt so gemacht:

 for /R "D:\WORK\Rechnungstool\BatchFiles" %%i in ("*.OK") do move %%i D:\WORK\Rechnungstool\Test.txt"  

Was stimmt daran nicht? Hab mich über die Befehle nun relativ gut informiert, komme jedoch nicht auf eine Lösung face-sad

Entweder stelle ich mich so blöd an, meine Struktur stimmt nicht, oder heute ist einfach mein Pechtag.

Tobias
Member: Biber
Biber Nov 26, 2007 at 10:19:45 (UTC)
Goto Top
Moin tob1as,

copy & paste diese Zeile..
for /R "D:\WORK\Rechnungstool\BatchFiles" %i in ("*.OK") do @Echo move %i D:\WORK\Rechnungstool\Test.txt  
...vom Cmd-Prompt aus und poste das Ergebnis, FALLS ES NICHT STIMMT.

Ich denke, Du hast nur ein überzähliges Anführungszeichen in Deiner Batch-Zeile.

Grüße
Biber
Member: bastla
bastla Nov 26, 2007 at 10:51:14 (UTC)
Goto Top
Hallo tob1as!

Nur zur Sicherheit: Willst Du alle *.OK als Ergebnis in einer großen "D:\WORK\Rechnungstool\BatchFiles\Test.txt"-Datei? Wenn ja, dann etwa so:
for /R "D:\WORK\Rechnungstool\BatchFiles" %i in ("*.OK") do type "%i">>"D:\WORK\Rechnungstool\BatchFiles\Test.txt"  
Falls aber alle Dateien in einem gemeinsamen Ordner (als Einzeldateien) sollen, müsstest Du beachten, dass bereits vorhandene gleichnamige Dateien durch die später verschobenen überschrieben werden - insoferne wäre eine Namenskonvention, etwa durch Voranstellen von zB "2007_11_" vor den Dateinamen, zu überlegen.

Grüße
bastla
Member: tob1as
tob1as Nov 26, 2007 at 11:13:34 (UTC)
Goto Top
Hallo bastla und Biber

Nur zur Sicherheit: Willst Du alle *.OK als
Ergebnis in einer großen
"D:\WORK\Rechnungstool\BatchFiles\Test.txt"-Datei?

Ja!

for /R
> "D:\WORK\Rechnungstool\BatchFiles"  
> %i in ("*.OK") do type  
> "%i">>"D:\WORK\Rechnungstool\BatchFiles\Test.txt"  
> 

Genau das suchte ich, ist es jedoch auch möglich, das die einzelnen Werte untereinander erscheinen, jetzt hab ich mal 2 .OK Files erstellt mit den Inhalten test1 und test2, im Text.txt steht nun test1test2.

Wie krieg ich das untereinander? Hab es noch nicht geschafft dass der Schleife noch ein Zeilenumbruch angehängt wird (\n?).


Falls aber alle Dateien in
einem gemeinsamen Ordner (als Einzeldateien)
sollen, müsstest Du beachten, dass
bereits vorhandene gleichnamige Dateien durch
die später verschobenen
überschrieben werden - insoferne
wäre eine Namenskonvention, etwa durch
Voranstellen von zB "2007_11_" vor
den Dateinamen, zu überlegen.

Die Dateien sind schon so beschriftet, mit diesem Problem werde ich auch noch kommen, da die .OK-Dateien noch ausgelesen werden müssen, doch das werde ich erst mal selbst probieren und ich muss noch mehr Infos über die Ordnerstruktur bekommen.

Danke euch beiden für die top Hilfe, ich hab schon einiges gelernt jetzt!
Member: bastla
bastla Nov 26, 2007 at 12:01:50 (UTC)
Goto Top
Hallo tob1as!

Sollte eigentlich so gehen:
for /R "D:\WORK\Rechnungstool\BatchFiles" %i in ("*.OK") do type "%i">>"D:\WORK\Rechnungstool\BatchFiles\Test.txt" & echo.>>"D:\WORK\Rechnungstool\BatchFiles\Test.txt"  

Grüße
bastla
Member: tob1as
tob1as Nov 26, 2007 at 12:25:17 (UTC)
Goto Top
Hallo tob1as!

Sollte eigentlich so gehen:
for /R
> "D:\WORK\Rechnungstool\BatchFiles"  
> %i in ("*.OK") do type  
> "%i">>"D:\WORK\Rechnungstool\BatchFiles\Test.txt"  
> &
> echo.>>"D:\WORK\Rechnungstool\BatchFiles\Test.txt"  
> 


So schreibt die Batch am Ende des Files immer noch einen Punkt.
Aber habs nun automatisch irgendwie geschafft, danke euch 2 für die Hilfe, mein nächstes Problem kommt bestimmt bald face-smile

FAZIT:


Hab nun mein Problem folgendermassen gelöst:

set "File=D:\WORK\Rechnungstool\BatchFiles\daten.txt"  
set "Pfad=D:\WORK\Rechnungstool\BatchFiles"  

if exist "%File%" del "%File%"  

for /R "%Pfad%" %%i in ("*.OK") do type "%%i">>"%File%"  
Member: Biber
Biber Nov 26, 2007 at 14:47:33 (UTC)
Goto Top
Moin tob1as,

mein nächstes Problem kommt bestimmt bald
Jederzeit wieder gerne... dass wir auch diese Kuh vom Eis bekommen haben, lag ja auch mit an Deiner Mitarbeit und Deinem Feedback.

So schreibt die Batch am Ende des Files immer noch einen Punkt.
Das kann eigentlich nur dann passieren, wenn zwischen "echo" und dem "." ein Leerzeichen steht.
Das von bastla verwendete Special "echo.>>whereEver.xyz", also ein "Echo" direkt gefolgt von wahlweise einem "." oder "\" oder "?" ermöglicht es, nur ein CRLF/einen Zeilenvorschub/eine leere Zeile zu posten.
Siehst Du ganz oft bei geECHOted Batchmenüs, die aus ästhetischen Gründen ein paar Leerzeilen beeinhalten.
Beispiel:
....
echo Menü
echo.
echo.
echo Auswahl A
echo.
echo Auswahl B
....

Da dieses Zeichen dirkt nach "echo" NICHT mit ausgegeben wird, kann es auch nicht am Ende Deiner Datei ankommen.

Grüße
Biber
Member: tob1as
tob1as Dec 03, 2007 at 06:54:27 (UTC)
Goto Top
Guten Morgen allerseit

Nun bin ich bei meinem nächsten Problem:

Mein bisheriges Batch-File soll erweitert werden!

 
@echo off
set "File=D:\WORK\Rechnungstool\BatchFiles\daten.txt"  
set "Pfad=D:\WORK\Rechnungstool\BatchFiles"  
@echo off
if exist "%File%" del "%File%"  

cls
echo.
echo Gespraechstdaten werden jetzt in die "%File%"   
echo eingelesen.
echo.
echo Bitte warten. . .

@echo off
for /R "%Pfad%" %%i in ("*.OK") do type "%%i">>"%File%"  

Es ändert sich der Pfad, er ist jetzt nämlich "X:\PROJECTS\XXX\BDV_TK".

Das Problem ist, dass das Batchfile aus diesem Ordner nur auf die Unterordner zugreifft, bzw. aus ihnen die Daten zusammenfügt, welche GEBUEHREN-2007-10/OK also GEBUEHREN-jahr-monat/OK aufgebaut sind und nicht anders, obwohl sich in anderen Ordnern innerhalb von "X:\PROJECTS\XXX\BDV_TK" auch solche .OK Dateien befinden können.

Ich hoffe ich hab mich einigermassen verständlich ausgedrückt und würde mich echt freuen, wenn mir jemand helfen könnte!

Lieber Gruss

Tobias
Member: Biber
Biber Dec 03, 2007 at 07:20:49 (UTC)
Goto Top
Moin tob1as,

dann musst Du außer dem %Pfad% selbst noch die letzte Zeile ändern:

...

for /R "%Pfad%" %%i in ("*.OK") do echo %%~pi|find /i "GEBUEHREN-">nul && type "%%i">>"%File%"  

Grüße
Biber
Member: tob1as
tob1as Dec 03, 2007 at 07:38:54 (UTC)
Goto Top
dann musst Du außer dem %Pfad% selbst
noch die letzte Zeile ändern:

...
> 
> for /R "%Pfad%" %%i in  
> ("*.OK") do echo %%~pi|find /i  
> "GEBUEHREN-">nul && type  
> "%%i">>"%File%"  
> 

Wenn du nicht so weit weg wohnen würdest, würde ich heute Abend mit dir ein paar Bier trinken, ich bin dir echt super dankbar! Batch-Gott face-smile

Mein Projekt ist jetzt fertig, ich hoffe ich hab jetzt mal für ne Weile keine Probleme hier, wenn ich dir irgendwie helfen kann (bei PHP und TYPO3 bin ich nich ganz so übel (; ) schreibst mir ne Mail oder hier ne PN!

Lieber Gruss

Tobias
Member: Biber
Biber Dec 03, 2007 at 07:50:58 (UTC)
Goto Top
Moin tob1as,

Wenn du nicht so weit weg wohnen würdest, würde ich heute Abend mit dir ein paar Bier trinken
Na ja, Bier oder Fussball nach Bremen tragen, wo es Becks und Werder gibt... das ist nett gemeint, aber eigentlich nicht nötig... face-wink

Aber wenn Du so einen kleinen grünen Haken oben am Thread anbringen könntest,
das wäre schon mehr, als ich normalerweise von einem Montagmorgen erwarte....

Grüße zurück
Biber
Member: tob1as
tob1as Dec 04, 2007 at 09:58:44 (UTC)
Goto Top
 
> @echo off
> set
> "File=D:\WORK\Rechnungstool\BatchFiles\daten.txt"  
> set
> "Pfad=D:\WORK\Rechnungstool\BatchFiles"  
> @echo off
> if exist "%File%" del  
> "%File%"  
> 
> cls
> echo.
> echo Gespraechstdaten werden jetzt in die
> "%File%"   
> echo eingelesen.
> echo.
> echo Bitte warten. . .
> 
> @echo off
> for /R "%Pfad%" %%i in  
> ("*.OK") do type  
> "%%i">>"%File%"  

Es ändert sich der Pfad, er ist jetzt
nämlich
"X:\PROJECTS\XXX\BDV_TK".

Das Problem ist, dass das Batchfile aus
diesem Ordner nur auf die Unterordner
zugreifft, bzw. aus ihnen die Daten
zusammenfügt, welche
GEBUEHREN-2007-10/OK also
GEBUEHREN-jahr-monat/OK aufgebaut sind und
nicht anders, obwohl sich in anderen Ordnern
innerhalb von
"X:\PROJECTS\XXX\BDV_TK" auch
solche .OK Dateien befinden können.

Hallo zusammen

Ich hab ein neues Problem(ist ja mal nichts neues..)

Auf jeden Fall hab ich mir das Text-File mal angesehen, welches mir die Batch erstellt, und einen krassen Fehler entdeckt.

Die Ordnerstruktur sieht folgendermassen aus:


GEBUEHREN-2007-10
- OK
.
.
.
GEBUEHREN-2009_12
- OK

GeschJahr2003
- OK
.
.
.
GeschJahr2006
-GEBUEHREN-200x-xx
- OK

Jetzt soll die Batch nur diejenigen Files aus den OK-Ordnern auslesen bei welcher der Ordner nicht GeschJahr200x ist, sprich nur diejenige nehmen aus den GEBUEHREN-200x usw.

Das Problem in meiner momentanen Batch ist, dass sie rekursiv nach allen GEBUEHREN Ordner sucht, und diejenigen OK-Dateien im GeschJahr200x_xx/GEBUEHREN auch einschliesst.

Das Problem ist, dass in den GeschJahr200x_xx/ -Ordnern auch Ordner in der Form von GEBUEHREN-200x vorkommen, die Batch sollte also nur in die oberste Ebene gehen, dort die .OK Dateien zusammenfügen, und NICHT in die GeschJahr200x_xx reingehen.

Das Text-File wird sonst 2GB gross!


Wäre super wenn mir hier jemand helfen könnte bei der genauen Zuweisung...blick langsam nicht mehr durch!


Lieber Gruss

Tobias
Member: tob1as
tob1as Dec 10, 2007 at 06:46:09 (UTC)
Goto Top
Hallo zusammen
Weiss wirklich niemand Rat? Habe letzte Woche MI,DO und FR damit verbracht eine Lösung zu finden doch leider funktionierte nichts face-sad

Lieber Gruss

Tobias

So sieht die Batch momentan aus:

@echo off
set "File=J:\x\daten.txt"  
set "Pfad=J:\PROJECTS\x\"  
@echo off
if exist "%File%" del "%File%"  

cls
echo.
echo Gespraechsdaten werden jetzt in die "%File%"   
echo eingelesen.
echo.
echo Bitte warten. . .

@echo off
for /R "%Pfad%" %%i in ("*.OK") do echo %%~pi|find /i "GEBUEHREN-">nul && type "%%i">>"%File%"  

cls
echo.
COLOR 0E
echo Gespraechsdaten sind jetzt fertig eingelesen.
echo.
echo.
echo.
echo.
echo Druecken Sie eine beliebige Taste um die Berechnung abzuschliessen!
pause > NUL
Member: Biber
Biber Dec 10, 2007 at 19:09:20 (UTC)
Goto Top
Moin tob1as,

ich bin nicht sicher, ob ich das Problem richtig verstehe, bzw. wasa so kompliziert daran ist.

Falls ich es richtig verstanden habe, wäre die Situation sinngemäß so, wie ich sie hier nachgebildet habe:
>dir /b /s *.ok
D:\temp\test\Gebuehren-2007-01\22140.ok
D:\temp\test\Gebuehren-2007-02\10406.ok
D:\temp\test\Gebuehren-2007-03\24201.ok
D:\temp\test\gj2003\Gebuehren-2003-02\10984.ok
...und den 4.Fall, also das Unterverzeichnis "Gebuehren-2003-02", welches nicht direkt unter dem Pfad liegt,
in dem "normalerweise" die "Gebuehren-2007-xx\*.Ok-Dateien liegen, den willst Du NICHT haben?

Das wäre doch dann nur:
>set pfad=d:\temp\test
### erst die bisherige Zeile von oben:
>for /R "%pfad%" %i in ("*.OK") do @echo %~pi|find /i "GEBUEHREN-"  
\temp\test\Gebuehren-2007-01\
\temp\test\Gebuehren-2007-02\
\temp\test\Gebuehren-2007-03\
\temp\test\gj2003\Gebuehren-2003-02\

## die Variable %~pi (nur Pfad) auf %~dpi (Lw+Pfad) oder %i (ganzer Pfad/Dateiname) erweitern.
>for /R "%pfad%" %i in ("*.OK") do @echo %~dpi|find /i "%pfad%\GEBUEHREN-"  
d:\temp\test\Gebuehren-2007-01\
d:\temp\test\Gebuehren-2007-02\
d:\temp\test\Gebuehren-2007-03\

## und %pfad% muss unmittelbar vor "GEBUEHREN-...." stehen. 
## Dann werden nur die drei statt vier Verzeichnisse angezeigt/angezogen.

Oder habe ich jetzt die Verzeichnisstruktur missverstanden?

Grüße
Biber
Member: tob1as
tob1as Dec 11, 2007 at 06:42:33 (UTC)
Goto Top
Hallo Biber
Danke für deine Antwort. Du hast die Situation genau richtig verstanden! Mir wird auch immer klarer wie es funktioniert, doch irgendwie wills noch nicht so funktionieren, dass es diese .OK-Files dann auch noch in mein Text-File schreibt so wie vorher!

Hier mal meine Batchdatei(neu):

@echo off
set "File=J:\Rechnungstool\Daten\daten.txt"  
set "Pfad=J:\PROJECTS\"  
@echo off
if exist "%File%" del "%File%"  

cls
echo.
echo Gespraechsdaten werden jetzt in die "%File%"   
echo eingelesen.
echo.
echo Bitte warten. . .

@echo off

for /R "%Pfad%" %i in ("*.OK") do @echo %~dpi|find /i "%Pfad%\GEBUEHREN-"  
J:\PROJECTS\Gebuehren-2007-01\
J:\PROJECTS\Gebuehren-2007-02\
J:\PROJECTS\Gebuehren-2007-03\
J:\PROJECTS\Geschaeftsjahr-2005\Gebuehren-2003-02\
>nul && type "%%i">>"%File%"  

cls
echo.
COLOR 0E
echo Gespraechsdaten sind jetzt fertig eingelesen.
echo.
echo.
echo.
echo.
echo Druecken Sie eine beliebige Taste um die Berechnung abzuschliessen!
pause > NUL


Irgendwie muss ich den Teil noch ändern, wo die betreffenden Verzeichnisse gewählt werden, aus welchen Dateien ausgelesen werden, und aus welchen nicht, doch genau das funktioniert noch nicht.

Lieber Gruss

Tobias
Member: Biber
Biber Dec 11, 2007 at 09:50:10 (UTC)
Goto Top
Moin tob1as,

vielleicht habe ich mich missverständlich ausgedrück...das Testen, das ich gestern am CMD-Prompt gemacht habe, sollte nicht 1:1 in die Batch.

Wenn schon, dann:
....
for /R "%Pfad%" %%i in ("*.OK") do @echo %%~dpi|find /i "%Pfad%\GEBUEHREN-">nul && type "%%i">>"%File%"  
...
...statt der 5 Zeilen, vordie ich sicherheitshalber eine Kommentar-Marke gesetzt habe.
...
REM for /R "%Pfad%" %%i in ("*.OK") do @echo %%~dpi|find /i "%Pfad%\GEBUEHREN-"  
REM J:\PROJECTS\Gebuehren-2007-01\
REM J:\PROJECTS\Gebuehren-2007-02\
REM J:\PROJECTS\Gebuehren-2007-03\
REM J:\PROJECTS\Geschaeftsjahr-2005\Gebuehren-2003-02\
REM  && type "%%i">>"%File%"  

Grüße
Biber
Member: tob1as
tob1as Dec 11, 2007 at 11:47:26 (UTC)
Goto Top
Hallo Biber

Merci für deine Hilfe

Ich verstehe nicht, weshalb du das gecodet hast:
REM J:\PROJECTS\Gebuehren-2007-03\
REM J:\PROJECTS\Geschaeftsjahr-2005\Gebuehren-2003-02\

Wie erkennt die Batch hier, dass sie in den Geschäftsjahrordner nicht gehen soll bzw. aus ihm keine Dateien holen?


Habs jetzt so versucht, und es schreibt nun kein txt-File mehr:

for /R "%Pfad%" %i in ("*.OK") do @echo %~dpi|find /i "%Pfad%\GEBUEHREN-"  
J:\PROJECTS\x\GEBUEHREN-2007-10\
J:\PROJECTS\x\GEBUEHREN-2007-11\
J:\PROJECTS\x\Geschaeftsjahr-2005\GEBUEHREN-2003-02\
&& type "%%i">>"%File%"  

Gruss Tobias
Member: Biber
Biber Dec 11, 2007 at 12:08:34 (UTC)
Goto Top
Moin tob1as,

es geht jetzt durcheinander mit CMD-Prompt/Batchversion und Testen/Echteinsatz.

Für Batch (alle Zählvariablen wie z.B %i) mit ZWEI"%%"-Prozentzeichen schreiben.

DIESE EINE FOLGENDE ZEILE sollte in Deine Batchdatei ANSTATT der 5 oder 6 Zeilen, die Deine FOR-Anweisung jetzt lang ist.

....
for /R "%Pfad%" %%i in ("*.OK") do @echo %%~dpi|find /i "%Pfad%\GEBUEHREN-">nul && type "%%i">>"%File%"  
...

Mehr erstmal nicht, dann sehen wir weiter,

Grüße
Biber
Member: tob1as
tob1as Dec 11, 2007 at 12:20:45 (UTC)
Goto Top
Hallo Biber

So erstellts die Textdatei mit allen OK-Daten.
for /R "%Pfad%" %%i in ("*.OK") do echo %%~dpi|find /i "GEBUEHREN-">nul && type "%%i">>"%File%"  

Doch leider besteht das Problem mit dem Geschäftsjahr immer noch, und ich verlier langsam den Überblick, wie man das lösen kann!

Ganz lieber Gruss

Tobias