apejovic
Goto Top

Batch für bestimmte Dateien kopieren,komme nicht weiter

Hallo Gemeinde,

die Google Suche hat mich oft zu Eurem Board gebracht, leider finde ich keinen Lösungsansatz für mein problem.

Sollte ich doch im falschen bereich sein,dann bitte verschieben.

Ich versuche mal mein problem zu erläutern. Einmal im Monat muß ich ca. 10 Rechner (jeden Monat andere,nie die selben) abfahren und von dort jeweils ca. 15 Dateien kopieren. Die Dateien sind alles .db

Der Ordner befindet sich z.B. unter c:\anwendungsprogramm\

Die Ordnernamen bestehen immer aus 8 zahlen. Ich weiß nie welche.

Der Pfad wäre dann: c:\anwendungsprogramm\12345678\

Es existiert nur eine Partion. Der USB-Stick wo ich die Daten gerne als Ziel hinkopieren möchte, hätte somit immer den Laufwerksbuchstaben "D". Sollte immer so bleiben.

Um mir die Arbeit zu erleichtern wollte ich mir gerne eine Batch schreiben, die das für mich erledigt.

Stick rein, .bat ausführen, Glücklich sein.

Wenn jetzt noch der Ordnername vom Rechner mitübernommen würde,wäre es perfekt, oder
der Ordner wird nach dem Computernamen benannt (möglich?)

Habt Ihr eine Idee?

Dankeschön

Der Computername, bzw. die Info die ich benötige, steht auch noch in der boot.ini drin. Statt das 2 Systeme zur Auswahl stehen,wird hier nur die Info für den PC eingetragen.

Content-Key: 190635

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

Printed on: April 24, 2024 at 10:04 o'clock

Member: Pjordorf
Pjordorf Sep 03, 2012 at 15:13:17 (UTC)
Goto Top
Hallo,

Zitat von @apejovic:
die Google Suche hat mich oft zu Eurem Board gebracht,
Das Hören wir doch gernface-smile

leider finde ich keinen Lösungsansatz für mein problem.
Den sollte es aber hier, gerade weil es auch um Batch und Dateien geht, mehr als einmal gebenface-smile

Sollte ich doch im falschen bereich sein,dann bitte verschieben.
Sollte es im falschen Bereich sein, kannst du es auch selbst verschiebenface-smile

Habt Ihr eine Idee?
Ideen haben wir hier viele. Ob dir diese aber helfen und oder gefallen? (jetzt mal Schwimmen gehen ist auch eine Idee)face-smile
Nun, warum gibst du uns nicht das was du schon hast (in code Blöcke) und sagst uns wo es genau in deinem Batch hapert und wo genau du schwierigkeiten hast. Dann können wir dir auch gezielt helfen und mit dir eine Lösungen erarbeiten (Kostenlos) welche dann bei dir funktioniert und dich als der Held darstehen lässt?

Und du ahnst es schon, jetzt kommen diese hässlichen Fragen die wir hier immer stellen wenn wir nicht wissen was du weistface-smile

Welches OS
Welche umgebung
Nur per USB stick möglich?
Auch per LAN / Netzanbindung möglich?
Rechte auf den Systemen?
Mal so zum Anfang....

Gruß,
Peter
Mitglied: 60730
60730 Sep 03, 2012 updated at 15:59:34 (UTC)
Goto Top
moin,

naja - aber das ist doch nur ein einzeiler?

xcopy quelle\*.db /s .\%computername%\

Wobei Dateien, die in einem Unterordner "Programmname" liegen und die ne suffix db haben - was macht denn dieses Programm, wenn eine andere Aktion auf die Dateien zugreift?

Das muß doch vorher am besten per Hand "sauber" beendet werden...

Gruß
Member: apejovic
apejovic Sep 04, 2012 at 18:04:38 (UTC)
Goto Top
Welches OS
Welche umgebung
Nur per USB stick möglich?
Auch per LAN / Netzanbindung möglich?

Windows Xp embedded
Umgebung?
Nur USB Stick
Nach meiner Arbeit ist es per Lan/Netzwerk möglich. Es muss leider vorher gemacht werden.
Member: apejovic
apejovic Sep 04, 2012 at 18:17:46 (UTC)
Goto Top
Zitat von @60730:
moin,

naja - aber das ist doch nur ein einzeiler?

> xcopy quelle\*.db /s .\%computername%\

Wobei Dateien, die in einem Unterordner "Programmname" liegen und die ne suffix db haben - was macht denn dieses
Programm, wenn eine andere Aktion auf die Dateien zugreift?

Das muß doch vorher am besten per Hand "sauber" beendet werden...

Gruß

Es greift nichts anderes auf diese Dateien zu. Benötige aber nur von den rund 400 db Dateien nur die 15.
Es muss kein Programm beendet werden

Ach ja, habe "volle" Administratorrechte.
Member: apejovic
apejovic Sep 04, 2012 updated at 18:53:06 (UTC)
Goto Top
Mein Anfang sieht so aus (natürlich für alle db Dateien)

|@echo off
|xcopy c:\programme\anwendung\Ordner8zahlen\1.db d:\ordner /i
|xcopy c:\programme\anwendung\Ordner8zahlen\2.db d:\ordner /i
|xcopy c:\programme\anwendung\Ordner8zahlen\3.db d:\ordner /i
|xcopy c:\programme\anwendung\Ordner8zahlen\4.db d:\ordner /i
|pause

Mein Problem besteht jetzt darin den "unbekannten" Ordner einzupflegen. Ich muss dazu sagen das Stapelverarbeitung bei mir sehr selten zu gebrauch kommt. Bin quasi Anfänger.

Eine Sonderheit habe ich vergessen,sorry.

Eine .db Datei hat folgenden Aufbau:

Mon1208.db
(monatsleistung)jahrmonat.db

Es ist also so das ich manchmal 2 Dateien habe von der obigen habe.Also:

Mon1208.db
Mon1209.db

Ganz selten 3.

Kann man das nicht mit dem Platzhalter lösen Mon*.db ??
Mitglied: 60730
60730 Sep 04, 2012 at 18:58:16 (UTC)
Goto Top
Moin,

Sag mal...

Bist kein profi, kannst aber schon echo off,

Hast 400db dateien, brauchst aber nur die 15, also die von 1 bis 4

Tu mal in einer antwort die ganze butter bei die fische, und nicht einzelne troepfchen....

Weil sonst sehe ich das mit dem haendischen ablauf deutlich einfacher und nervenschonender fuer uns schon kommen....
Member: apejovic
apejovic Sep 04, 2012 at 19:35:54 (UTC)
Goto Top
Zitat von @60730:
Moin,

Sag mal...

Bist kein profi, kannst aber schon echo off,

Hast 400db dateien, brauchst aber nur die 15, also die von 1 bis 4

Tu mal in einer antwort die ganze butter bei die fische, und nicht einzelne troepfchen....

Weil sonst sehe ich das mit dem haendischen ablauf deutlich einfacher und nervenschonender fuer uns schon kommen....

PN für Dich. Kannst ja im Forum kundtun ob es genug Butter ist.
Mitglied: 60730
60730 Sep 04, 2012 at 19:52:56 (UTC)
Goto Top
also nochmal gaaaaaaaaaaaaaaaaaaaaaanz von vorne....
Zitat von @apejovic:
Hallo Gemeinde,
Ich versuche mal mein problem zu erläutern. Einmal im Monat muß ich ca. 10 Rechner (jeden Monat andere,nie die selben)
abfahren und von dort jeweils ca. 15 Dateien kopieren. Die Dateien sind alles .db
Der Ordner befindet sich z.B. unter c:\anwendungsprogramm\
Und gibt es irgendein Backup der Systeme?
(Ein gutes Backup ist nicht nur Gold wert, sondern verändert auch das sogenannte Archivbit einer Datei)

Die Ordnernamen bestehen immer aus 8 zahlen. Ich weiß nie welche.
  • solche Infos brauchen "wir" um dir zu helfen, gibts da noch mehr? (Infos?)
Der Pfad wäre dann: c:\anwendungsprogramm\12345678\

Es existiert nur eine Partion. Der USB-Stick wo ich die Daten gerne als Ziel hinkopieren möchte, hätte somit immer den Laufwerksbuchstaben "D". Sollte immer so bleiben.
  • wobei es bei einem Script, dass in einem USB Stick läuft tatsächlich egal ist, welchen Buchstaben der hat - aber lieber zuviel, als zuwenig infos...
Um mir die Arbeit zu erleichtern wollte ich mir gerne eine Batch schreiben, die das für mich erledigt.

Stick rein, .bat ausführen, Glücklich sein.

Wenn jetzt noch der Ordnername vom Rechner mitübernommen würde,wäre es perfekt, oder
der Ordner wird nach dem Computernamen benannt (möglich?)
  • siehe deer einzeilige Ansatz.

Habt Ihr eine Idee?

Dankeschön

Der Computername, bzw. die Info die ich benötige, steht auch noch in der boot.ini drin. Statt das 2 Systeme zur Auswahl stehen,wird hier nur die Info für den PC eingetragen.

Naja - üblicherweise gibts aber auch eine Systemvariable %computername%, die ist im Zweifel immer eindeutig, auch wenn einer mal ne Platte geklont und das anpassen der boot.ini versäumt hat.

nur mal so ein Ding aus der hohlen Hand....

E:\test>set test=%random%%random%%random%%random%

E:\test>set test=%test:~-8%

E:\test>echo %test%
42273531
md %test%

So nun habe ich (ok über das echo %test% kenne ich Ihn doch) einen Ordner erzeugt, der 8 Buchstaben hat und ich "kenne" den eigentlich nicht...
E:\test>echo test>%test%\test.db
Und darin liegt jetzt eine test.db Datei...

  • angenommen - es wäre ein deutsches System...

E:\test>dir *.db /s|find "Verzeichnis"
Verzeichnis von E:\test\42273531
0 Verzeichnis(se), 5.203.779.584 Bytes frei

Wüßte ich jetzt, wie der Ordner heist.(wenn ich das nicht vorher schon gewußt hätte)

"Aber" nochmal - das ist alles killefitz.
Du brauchst eine batch und du weißt mehr was die abfangen soll, als wenn ich / ein anderer hier ein xxxxxx Seiten langes alle möglichen Varianten (die vielleicht garnicht auftreten oder interessieren) abfangen würde.

Also Butter bei die Fische und vor allem - was ist an dem obigen Einzeiler "falsch"?
UNd darfst du z.b das Archivbit verändern, um beim nächsten Lauf die zu erkennen, die bereits gesichert wurden?

Nenn das Ziel mit allen möglichen Hürden, dann kann man auch einen Weg zimmern - andersherum funktionaggelt das nicht (oder nicht für umme)

Gruß
Member: apejovic
apejovic Sep 04, 2012 at 19:53:17 (UTC)
Goto Top
Ich arbeite in der Windenergiebranche als Inbetriebnehmer. Wenn die Anlagen den Testlauf beendet haben, müssen diese .db Dateien kopiert werden und ausgewertet werden.

Dies dauert pro Anlage ca. 20min. Mit einer Batch sollte es nur sekunden dauern. Damit kann man effizienter arbeiten.

Je nach Anlagenpark können es auch locker 100 Anlagen sein. Jede Anlage hat seine eigene Nummer,das ist dieser Ordner mit den 8 Zahlen der sich immer an c:\anwednungsprogramm\Anlagennummer\ befindet.

Noch mehr Infos nötig?
Member: apejovic
apejovic Sep 04, 2012 updated at 20:19:28 (UTC)
Goto Top
Zitat von @60730:
Und gibt es irgendein Backup der Systeme?
(Ein gutes Backup ist nicht nur Gold wert, sondern verändert auch das sogenannte Archivbit einer Datei)
Nein,ist nicht nötig.Dieses kopieren der Dateien wird nur einmalig pro Rechner gemacht.

> Die Ordnernamen bestehen immer aus 8 zahlen. Ich weiß nie welche.
  • solche Infos brauchen "wir" um dir zu helfen, gibts da noch mehr? (Infos?)
> Der Pfad wäre dann: c:\anwendungsprogramm\12345678\
Naja,die Info ist eigentlich,daß er immer aus 8 Zahlen besteht.Befindet Sich immer unter c:\programm\
>
> Es existiert nur eine Partion. Der USB-Stick wo ich die Daten gerne als Ziel hinkopieren möchte, hätte somit immer
den Laufwerksbuchstaben "D". Sollte immer so bleiben.
Es sollte nie konflikte wegen des Laufwerksbuchstaben entstehen.Gegenmaßnahmen sind natürlich willkommen.
* wobei es bei einem Script, dass in einem USB Stick läuft tatsächlich egal ist, welchen Buchstaben der hat - aber
lieber zuviel, als zuwenig infos...
Ich wollte nur anmerken,falls es eine große Bewandnis hat, wohin die dateien kopiert werden sollen.
> Um mir die Arbeit zu erleichtern wollte ich mir gerne eine Batch schreiben, die das für mich erledigt.
>
> Stick rein, .bat ausführen, Glücklich sein.
>
> Wenn jetzt noch der Ordnername vom Rechner mitübernommen würde,wäre es perfekt, oder
> der Ordner wird nach dem Computernamen benannt (möglich?)
  • siehe deer einzeilige Ansatz.
Da werden durch Wildcard alle .db Dateien kopiert, ist unnötig.Es müsste seperat per hand aussortiert werden.Dann brauche ich auch keine Batch mehr.
>
> Habt Ihr eine Idee?
>
> Dankeschön
>
> Der Computername, bzw. die Info die ich benötige, steht auch noch in der boot.ini drin. Statt das 2 Systeme zur Auswahl
stehen,wird hier nur die Info für den PC eingetragen.

Naja - üblicherweise gibts aber auch eine Systemvariable %computername%, die ist im Zweifel immer eindeutig, auch wenn einer
mal ne Platte geklont und das anpassen der boot.ini versäumt hat.

nur mal so ein Ding aus der hohlen Hand....

> E:\test>set test=%random%%random%%random%%random%
> 
> E:\test>set test=%test:~-8%
> 
> E:\test>echo %test%
> 42273531
> md %test%
> 

So nun habe ich (ok über das echo %test% kenne ich Ihn doch) einen Ordner erzeugt, der 8 Buchstaben hat und ich
"kenne" den eigentlich nicht...
> E:\test>echo test>%test%\test.db
Und darin liegt jetzt eine test.db Datei...

  • angenommen - es wäre ein deutsches System...

> E:\test>dir *.db /s|find "Verzeichnis"
> Verzeichnis von E:\test\42273531
> 0 Verzeichnis(se), 5.203.779.584 Bytes frei

Ok,ich kann also eine bestimmte .db suchen um an den ordnernamen zu kommen.Wie pflegt man sowas ein im batch?
Wüßte ich jetzt, wie der Ordner heist.(wenn ich das nicht vorher schon gewußt hätte)

"Aber" nochmal - das ist alles killefitz.
Du brauchst eine batch und du weißt mehr was die abfangen soll, als wenn ich / ein anderer hier ein xxxxxx Seiten langes
alle möglichen Varianten (die vielleicht garnicht auftreten oder interessieren) abfangen würde.

Also Butter bei die Fische und vor allem - was ist an dem obigen Einzeiler "falsch"?
UNd darfst du z.b das Archivbit verändern, um beim nächsten Lauf die zu erkennen, die bereits gesichert wurden?

Nenn das Ziel mit allen möglichen Hürden, dann kann man auch einen Weg zimmern - andersherum funktionaggelt das nicht
(oder nicht für umme)

Gruß

Sollte ich etwas missverstanden haben,dann korriegiere mich bitte jemand.

Danke
Mitglied: 60730
60730 Sep 04, 2012 updated at 20:42:14 (UTC)
Goto Top
Da werden durch Wildcard alle .db Dateien kopiert, ist unnötig.
  • falsch - da werden alle .db unterhalb von c:\programm kopiert.
Du schreibst ja c:\programm und nicht c:\Programme - oder meinst du das?
Und soviele .db Dateien hat ein xp embedded nun auch wieder nicht.
Es müsste seperat per hand aussortiert werden.
  • anhand welcher Kriterien?
Dann brauche ich auch keine Batch mehr.
  • aber ich brauch jetzt nen fetten Snaps und ne Tüte Desinfektion, meine AusderNaseziehangel ist voll bis oben hin.
Member: apejovic
apejovic Sep 04, 2012 updated at 21:27:22 (UTC)
Goto Top
Prost


Das Anwendungsprogramm nennen wir mal Klarsichtfolie, die Anlage (und somit AUCH der Ordner im Windows-System unter Klarsichtfolie) heißt "24136857"

Mein Pfad lautet also: c:\klarsichtfolie\24136857\

Darunter befinden sich die benötigten .db Dateien (Sagen wir 5),welche ich gerne kopieren möchte; auf einen USB-Stick.
Die anderen hunderte brauche ich nicht.

Ich komme zum nächsten PC:

Mein Pfad lautet also: c:\klarsichtfolie\65478912\

Davon benötige auch wieder die 5 Dateien.


Sorry,falls ich mich zu kompliziert ausdrücke.Man meint ja immer,man drückt sich vernünftig aus.

Das habe ich bis jetzt zusammen gebastelt:

|@echo off
| set /P w= Testlaufdaten kopieren [Y]es / [N]o?
| if /I "%w%"=="y" goto Yes
| if /I "%w%"=="n" goto No
| echo Fehler: [%w%]
|goto ende
|
|:Yes
| echo "Copy Data"
|xcopy c:\klarsichtfolie\25110055\1.db f:\Testlauf /I /Q
|xcopy c:\klarsichtfolie\25110055\2.db f:\Testlauf /I /Q
|xcopy c:\klarsichtfolie\25110055\3.db f:\Testlauf /I /Q
|xcopy c:\klarsichtfolie\25110055\4.db f:\Testlauf /I /Q
|xcopy c:\klarsichtfolie\25110055\Mon*.db f:\Testlauf /I /Q
|goto ende
|
|:No
| echo "Copy aborted"
|goto ende
|
|
|:ende
| echo.
| pause
Mitglied: 60730
60730 Sep 05, 2012 at 07:04:56 (UTC)
Goto Top
moin,

Mein Pfad lautet also: c:\klarsichtfolie\24136857\

Darunter befinden sich die benötigten .db Dateien (Sagen wir 5),welche ich gerne kopieren > möchte; auf einen USB-Stick.
Die anderen hunderte brauche ich nicht.

1) Hast du diesen Einzeiler da oben jemals probiert?
2) warum zum teufel echo offt Ihr immer alle Infos weg - ist das ne Krankheit?
3) welche anderen hunderte Dateien? Haben die auch ne suffix .db?

xcopy c:\klarsichtfolie\*.db /s .\%computername%\

Was passiert, wenn dieser einzeiler auf nem Stick liegt und der Programmname tatsächlich Klarsichtfolie heisst?

Eben.
Member: apejovic
apejovic Sep 05, 2012 at 07:34:52 (UTC)
Goto Top
Zitat von @60730:
moin,

> Mein Pfad lautet also: c:\klarsichtfolie\24136857\

> Darunter befinden sich die benötigten .db Dateien (Sagen wir 5),welche ich gerne kopieren > möchte; auf einen
USB-Stick.
> Die anderen hunderte brauche ich nicht.

1) Hast du diesen Einzeiler da oben jemals probiert?

Ja habe ich,funktioniert auch gut.Allerdings sind unter \klarsichtfolie\ noch andere Unterordner mit .db Dateien,die ich nicht benötige.

2) warum zum teufel echo offt Ihr immer alle Infos weg - ist das ne Krankheit?

Kann auch alles zu sehen sein,darum geht es ja nicht.

3) welche anderen hunderte Dateien? Haben die auch ne suffix .db?

Ja,haben Sie.


> xcopy c:\klarsichtfolie\*.db /s .\%computername%\
> 

Was passiert, wenn dieser einzeiler auf nem Stick liegt und der Programmname tatsächlich Klarsichtfolie heisst?

Eben.

Habe jetzt was neues probiert:

|@echo off
| set /P w= testdaten kopieren [Y]es / [N]o?
| if /I "%w%"=="y" goto Yes
| if /I "%w%"=="n" goto No
| echo Fehler: [%w%]
|goto ende
|
|:Yes
|
|xcopy c:\klarsichtfolie\Datena*.db /s .\%computername%\
|xcopy c:\klarsichtfolie\Datenb*.db /s .\%computername%\
|xcopy c:\klarsichtfolie\Datenc*.db /s .\%computername%\
|xcopy c:\klarsichtfolie\Datend*.db /s .\%computername%\
|xcopy c:\klarsichtfolie\Mon*.db /s .\%computername%\
|echo "Data copied"
|goto ende
|
|:No
| echo "Copy aborted"
|goto ende
|
|
|:ende
|echo.
|pause

Die Dateien die kopiert werden sollen sind im Batch mit richtigem Namen geschrieben. Ich muß trotzdem den Platzhalter setzen,damit diese Dateien kopiert werden. Kann mir das jemand erklären?

Scheint aber so zu funktionieren.....

Ich werde das mal heute testen an 2 Anlagen und melde mich nochmal.
Member: apejovic
apejovic Sep 05, 2012 updated at 18:21:23 (UTC)
Goto Top
Habe es zu 50% erfolgreich testen können.

Allerdings sind unterm c:\klarsichtfolie\ noch 2 weitere Ordner, die unter anderem die selben Dateinamen haben, wußte ich auch nicht.

Er kopiert aber aus jedem Ordner die Dateien und fügt sie in gleich benannte Ordner auf den Stick ein.

Also Computername\ordner1\db dateien
Computername\ordner2\db dateien
Computername\ordner3\db dateien

Frage mich immer noch,wie ich das mit dem Ordner lösen kann.

2 Fragen liebe Gemeinde. Was wäre einfacher?

1. Die überflüssigen 2 Ordner mit der Batch löschen nach dem kopieren (Ordner mit 8 Zahlenmuß übrig bleiben)?

2. Den Ordner mit den 8 zahlen per Batch suchen lassen und dann die Dateien kopieren?

@timobeil

Wie könnte ich deinen Script mit einpflegen?
Mitglied: 60730
60730 Sep 05, 2012 updated at 22:23:37 (UTC)
Goto Top
ok - wenns denn so ist, dann ist das eine Testnummer
E:\test>md db

E:\test>cd db

E:\test\db>md 12345678

E:\test\db>echo x>.\12345678\1.db

E:\test\db>md abcdefgh

E:\test\db>echo x>.\abcdefgh\1.db

E:\test\db>dir /s /b *.db
E:\test\db\12345678\1.db
E:\test\db\abcdefgh\1.db
Also nur die Ordner, die ausschliesschlich aus mindestens 8 Ziffern bestehen, sollen gefunden werden:

 E:\test\db>dir *.db /S |findstr [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
 Verzeichnis von E:\test\db\12345678
Beim deutschen System sieht das so aus, dich interessiert aber nur der 3 Teil - denn 8 ziffern <> Leerzeichen:
Und weil echo ne Prima Anzeige ist und echo off daher ... ach was reg ich ich auf.....

 E:\test\db>for /f "tokens=3" %a in ('dir *.db /S ^|findstr [0-9][0-9][0-9][0-9][
0-9][0-9][0-9][0-9]') do echo %a
Du willst die aber weiterverarbeiten?
E:\test\db>for /f "tokens=3" %a in ('dir *.db /S ^|findstr [0-9][0-9][0-9][0-9][
0-9][0-9][0-9][0-9]') do xcopy %a\*.db e:\db\
E:\test\db>xcopy E:\test\db\12345678\*.db e:\db\
E:\test\db\12345678\1.db
1 Datei(en) kopiert

so das einzigste was du machen mußt, ist diese Demomimik an das anpassen, was ich dir oben geschrieben hab, mal for /? und Set /? eingeben und lesen und anhand der gewonnenen Infos das dann für ne Batch umschreiben.

Und wenn das dann läuft, darfst du soviele @echo offs reinmalen, bis der USBStick platzt
(achne , das war ja ein anderer)

N8
Member: apejovic
apejovic Sep 06, 2012 at 12:44:22 (UTC)
Goto Top
Also erstmal Danke für Deine Hilfe.

Ich versuche den ganzen Morgen das irgendewie umzuschreiben,aber es scheint nicht zu klappen.

Ich poste erstmal den original Code:

|set /P w= Copy Trialrun Data from WTG [Y]es / [N]o?
|if /I "%w%"=="y" goto Yes
|if /I "%w%"=="n" goto No
|echo Fehler: [%w%]
|goto ende
|
|:Yes
|xcopy c:\visupro\PowerDat*.db /s .\%computername%\
|xcopy c:\visupro\StatDat*.db /s .\%computername%\
|xcopy c:\visupro\MinAna*.db /s .\%computername%\
|xcopy c:\visupro\ErrDev*.db /s .\%computername%\
|xcopy c:\visupro\Mon*.db /s .\%computername%\
|echo "Data copied"
|goto ende
|
|:No
|echo "Copy aborted"
|goto ende
|
|:ende
|echo.
|pause

Ich versuche mit der Help Info das zu verstehen, ist aber nicht so einfach.Denke das liegt am mangelden background Wissen

Aber ich arbeite daran. Wie setze ich den Pfad im for Satz ein,damit er mir nicht aufm Stick die bereits vorhanden Ordner durchsucht?
Member: apejovic
apejovic Sep 06, 2012 at 12:46:27 (UTC)
Goto Top
Zitat von @60730:

E:\test\db>xcopy E:\test\db\12345678\*.db e:\db\
Wie kommt das zu Stande??
Mitglied: 60730
60730 Sep 06, 2012 updated at 12:53:13 (UTC)
Goto Top
Zitat von @apejovic:
Zitat von @60730:

E:\test\db>xcopy E:\test\db\12345678\*.db e:\db\
Wie kommt das zu Stande??

  • durch das da:
for /f "tokens=3" %a in ('dir *.db /S ^|findstr [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]') do xcopy %a\*.db e:\db\   
Member: apejovic
apejovic Sep 06, 2012 at 14:23:54 (UTC)
Goto Top
Zitat von @60730:
> for /f "tokens=3" %%a in ('dir *.db /S ^|findstr [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]') do xcopy %%a\*.db  
> e:\db\ 
hier sollte es wohl dann "c:\visupro\" lauten,richtig?  
> 

Wenn ich die Zeile vom Stick starte, dann findet er alle Ordner auf dem Stick,die bereits auf dem Stick waren.
Wie lasse ich die Schleife auf c:\visupro\ arbeiten und dabei die sachen aufm Stick kopieren?
Member: apejovic
apejovic Sep 06, 2012 at 18:03:12 (UTC)
Goto Top
Ok, falls ich es richtig verstanden habe, kann ich meine variable "a" durch ein Wort mit dem set befehl ersetzen und vermutlich später mit dem set weiterarbeiten, richtig?
Mitglied: 60730
60730 Sep 06, 2012 updated at 18:15:44 (UTC)
Goto Top
Schreib doch mal...

  • bist du zufälligerweise ein und willst mich Ärgern?
Wie lasse ich die Schleife auf c:\visupro\ arbeiten und dabei die sachen aufm Stick kopieren?

for /f "tokens=3" %%a in ('dir c:\visupro\*.db /S ^|findstr [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]') do xcopy %%a\*.db .\%computername%\   
Gwendoline, erlöse mich


Ich bin weg, gaaaaaaaanz weit weg
Member: apejovic
apejovic Sep 06, 2012 at 18:28:57 (UTC)
Goto Top
Zitat von @60730:
Schreib doch mal...

  • bist du zufälligerweise ein und willst mich Ärgern?

Lol.....nein,wirklich nicht. Ich habe mir nur was in den Kopf gesetzt und möchte es gerne schaffen. Wenn auch mit mehr oder weniger Hilfe......Danke Dir.

Aber ich bin trotzdem stolz auf mein zusammengewürfeltes etwas.

Gleich mal testen........dann morgen nochmal in realen Bedingungen.
Member: apejovic
apejovic Sep 06, 2012 updated at 18:48:48 (UTC)
Goto Top
Ich bin's schon wieder.....ich trau mich garnicht mehr zu schreiben.

Es ist so:

unter c:\visupro\

befindet sich immer ein Ordner "25000" der behinhaltet (wie oben bereits erwähnt die selben Dateien). Dieser Ordner bzw die Dateien daraus werden nicht kopiert und das ist auch super so.

Jetzt ist es so,daß wenn ich oder meine kollegen mit unserer Arbeit fertig sind, dann kopieren wir den Ordner mit den 8 Zahlen (quasi als backup, na gut es gibt doch eins) und fügen ihm noch im Ordnernamen unsere Abteilung ein.

Der Original Ordner heißt also: 12345678

Dann kommt von uns die Bezeichnung Comm oder com davor oder dahinter. Manchmal mit Unterstrich, manchmal mit Leerzeichen dazwischen.

z.B. 12345678_comm oder 12345678 Com oder 12345678Comm

Also sind unter c:\visupro\ 12345678
25000
12345678comm


Also mit anderen Worten: Er kopiert aus dem richtigem Verzeichnis, möchte dann aber die Daten aus dem anderen comm Ordner überschreiben.

Kann man das auch noch beheben?

Ich weiß das echt zu schätzen, was IHR in solchen Foren für uns kleine User (die nach erfolgreicher Formation eines Datenträgers denken, die wären der Held) vollbringt.

Ein ernstes Dankeschön für Euch alle.
Mitglied: 60730
60730 Sep 06, 2012 updated at 22:35:42 (UTC)
Goto Top
1) Frag mich nicht, warum ich das mache ich weiß es nicht
2) Ich gebs zu, diese ganze Demoscheixxe hat dir nix gebracht, als "Lehrer" kann ich also getrost mit ner Nullnummer abziehen.

for /f "tokens=3" %%a in ('dir c:\visupro\*.db /S ^|findstr [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]^|findstr /i /v "com"') do xcopy %%a\*.db .\%computername%\  

Diese "ständigen" achja hier noch da noch und eigentlich ist alles ganz anders mit nem Lerneffekt auf der anderen Seite, gegen den ein Quantum Trost schon ne Steigerung wäre, soviel kann ich gar nicht Essen wie ich kotzen könnte.....

3) Ich gebs auf und tauche unter.
Jetzt ist mal ne ganz lange Reise mit der Never come Back Airline angesagt.

N8
Member: apejovic
apejovic Sep 07, 2012 updated at 07:08:01 (UTC)
Goto Top
Guten Morgen,

also ich finde es hat was gebracht. Du kannst es ja nicht sehen, wie sich meine Gehirnwindungen einen Wolf geschrubbt haben.

Deine Aufforderung (Aufgabenstellung) gegenüber mir, damit ich selber auf die Lösung komme, habe ich schon verstanden.

Doch wie gesagt, selbst mit dem lesen der Help bzw Info, ist es für mich schwierig,da ich mit so etwas wirklich fast nie arbeite.

In der Schule wäre es für mich ne "5". Warum sollte der Lehrer daran schuld sein?

Gibt's ein einfach zu verstehendes Buch über dieses Thema? Ernsthaft jetzt.


Also könnte ich für die Zukunft durch das "^" einen weiteren Befehl einsetzen?
Member: apejovic
apejovic Sep 07, 2012 at 12:54:49 (UTC)
Goto Top
Zitat von @apejovic:

Also könnte ich für die Zukunft durch das "^" einen weiteren Befehl einsetzen?

Habe ich wohl missverstanden....

Kämpfe jetzt nur noch mit der Variablen "a" , also den unbekannten Ordner. Ein kluger Skript Schreiber,also ich nicht, wird wahrscheinlich zwischen der Schleife sagen können,mach aus der variablen einen Ordner. Der Ordnername wird ja jetzt nicht übernommen.

Gerne nur Tips, möchte meinen Sensei nicht noch weiter enttäuschen.
Member: apejovic
apejovic Sep 09, 2012 at 17:57:43 (UTC)
Goto Top
Ich habe den Batch erstmal wieder geändert in:
|@echo off
| set /P w= Copy Trialrundata from WTG [Y]es / [N]o?
| if /I "%w%"=="y" goto Yes
| if /I "%w%"=="n" goto No
| echo Fehler: [%w%]
|goto ende
|
|:Yes
|@echo off
|xcopy c:\visupro\errdev*.db /s .\%computername%\
|xcopy c:\visupro\minana*.db /s .\%computername%\
|xcopy c:\visupro\powerdat*.db /s .\%computername%\
|xcopy c:\visupro\statdat*.db /s .\%computername%\
|xcopy c:\visupro\mon*.db /s .\%computername%\
|echo "Data copied"
|
|rmdir /s/q .\%computername%\25000
|goto ende
|
|:No
| echo "Copy aborted"
|goto ende
|
|
|:ende
|echo.
|pause


Habe jetzt eine Zeile eingefügt um den überflüssigen Ordner "25000" samt inhalt, nach dem kopieren zu löschen.

Ich kämpfe jetzt mit dieser Zeile

|echo on
|FOR /f "tokens=*" %%a IN ('DIR .\%computername%\ /B /AD /S *com*') DO @echo del/S "%%a"
|echo.
|pause

Wie schaffe ich es,daß er nur den "PC-Namen"-Ordner durchsucht?
Member: apejovic
apejovic Sep 10, 2012 at 16:02:04 (UTC)
Goto Top
Hallo Leute!

Hab's hinbekommen. Ich musste leider einen festen Ordner für die Batch vergeben, um das Problem zu lösen.

Die Batch befindet sich nun in einem Ordner "Trialrun Data".

|@echo off
|set /P w= Copy Trialrundata from WTG [Y]es / [N]o?
|if /I "%w%"=="y" goto Yes
|if /I "%w%"=="n" goto No
|echo Fehler: [%w%]
|goto ende
|
|:Yes
|xcopy c:\visupro\errdev*.db /s .\%computername%\
|xcopy c:\visupro\minana*.db /s .\%computername%\
|xcopy c:\visupro\powerdat*.db /s .\%computername%\
|xcopy c:\visupro\statdat*.db /s .\%computername%\
|xcopy c:\visupro\mon*.db /s .\%computername%\
|echo "Data copied"
|
|rmdir /s/q .\%computername%\25000
|FOR /f "tokens=*" %%b IN ('dir "Trialrun Data" /B /AD /S *com*') DO rmdir /S /q "%%b"
|goto ende
|
|:No
|echo "Copy aborted"
|goto ende
|
|:ende
|echo.
|pause

Der findstr befehl hat auf manchen rechnern nicht funktioniert.Die Arbeit wäre nicht zu groß,aber unnötig um den Path im System Ordner zu erweitern. Deswegen diese Lösung.

Danke für Eure Hilfe, und besonderer Dank an LimboSeil TimoBeil.
Mitglied: 60730
60730 Sep 10, 2012, updated at Sep 11, 2012 at 06:19:05 (UTC)
Goto Top
Moin,

Auf Bibers freundlichen Hint hin...

Aber bitte wen du batche hier verfasst, nutze die Code Tags (zitiere diese Antwort oder schaue unter Formatierungshilfe nach)
Zitat von @apejovic:
Hallo Leute!

Hab's hinbekommen. Ich musste leider einen festen Ordner für die Batch vergeben, um das Problem zu lösen.

Die Batch befindet sich nun in einem Ordner "Trialrun Data".

rem @echo off
:runornot
set /P w= Copy Trialrundata from WTG [Y]es / [N]o?
IF /i not "%w%"=="y" if /i not "%w%"=="n" echo Fehler Falsche EIngabe: [%w%]  
if /I "%w%"=="y" goto Yes  
if /I "%w%"=="n" goto No  
goto runornot

:Yes

rem warum soviele Zeilen, wenn sich doch nur eine "Sache" aendert?  
for %%a in (errdev minana powerdat statdat mon) do (
           xcopy c:\visupro\%%a*.db .\%computername%\ ||echo fehler beim kopieren von %%a
           )  
echo "Data copied"  
rem und die Zeile verstehe ich nicht
rmdir /s/q .\%computername%\25000
rem diese theoretisch schon eher, gibts zwei "backups"  
FOR /f "tokens=*" %%b IN ('dir "Trialrun Data" /B /AD /S *com*') DO rmdir /S /q "%%b"  

goto ende

:No

echo "Copy aborted"  
goto ende

:ende
echo.
pause

Der findstr befehl hat auf manchen rechnern nicht funktioniert.
Mit welcher Fehlermeldung?

Die Arbeit wäre nicht zu groß,aber unnötig um den Path im System Ordner zu erweitern.
Aber üblicherweise ist beim echten XP findstr im Path (%windir%\system32) enthalten, von daher versteh ich das "so" nicht - welche Meldung gabs denn und warum hast du den Pfad - wenn die nicht in %windir%\system32 drin ist - nicht vorangestellt?
Deswegen diese Lösung.
Danke für Eure Hilfe, und besonderer Dank an LimboSeil TimoBeil.
Danke fürs Danke, war aber auch ne harte Nummer....

PS: Ich bin zwar hier im Moment der einzige, aber warum - ist doch im B Bereich beheimatet?
Member: apejovic
apejovic Sep 11, 2012 at 18:30:43 (UTC)
Goto Top
Zitat von @60730:
rem warum soviele Zeilen, wenn sich doch nur eine "Sache" aendert?
Newbee halt.....werde mich bessern.Altbewährtes war nie schlecht.Hauptsache for befehle werden demnächst noch angenommen.
rem und die Zeile verstehe ich nicht
rmdir /s/q .\%computername%\25000
Da der findstr nicht funktionierte,musste ich zurück zum alten weg. Daran gefiel mir besonders,nach dem PCNamen auch den Anlagenordner im Pfad zu haben. Aber es wurden die anderen beiden Ordner mitkopiert.Deswegen kann ich damit, einen Ordner löschen.Für den anderen ordner (mit com drin) musste ich die Zeile hier drunter hinzufügen.
rem diese theoretisch schon eher, gibts zwei "backups"
FOR /f "tokens=*" %%b IN ('dir "Trialrun Data" /B /AD /S *com*') DO rmdir /S /q "%%b"
2 Backups??

Mit welcher Fehlermeldung?
findstr is not recognized as an internal or external command operable program or batch file
> Die Arbeit wäre nicht zu groß,aber unnötig um den Path im System Ordner zu erweitern.
aus dem Grunde,weil ich nicht weiß,in wie fern das system vielleicht abgespeckt wurde (Sicherheit?)
Jedenfalls möchte ich die .bat als .exe mit meinen Kollegen teilen,und nicht jeder hat das selbe wissen um den Path zu erweiterten. Außerdem sollte die Bat Arbeit und Zeit sparen.
Danke fürs Danke, war aber auch ne harte Nummer....
Sorry dafür,ehrlich.
PS: Ich bin zwar hier im Moment der einzige, aber warum - ist doch im B Bereich beheimatet?
Vielleicht,weil du zu schnell geholfen hast und jetzt mußt du den ### ausbaden,......LOL ;o)

Nochmals Danke

Demnächst im Forum: Warum wird meine in .exe umgewandelte .bat als Virus erkannt.....muß mich noch einlesen..
Member: Pjordorf
Pjordorf Sep 11, 2012 at 18:43:27 (UTC)
Goto Top
Hallo,

Zitat von @apejovic:
Demnächst im Forum: Warum wird meine in .exe umgewandelte .bat als Virus erkannt.....muß mich noch einlesen..
Ich hol schon mal Popcornface-smile

Gruß,
Peter
Member: apejovic
apejovic Sep 11, 2012 at 19:01:31 (UTC)
Goto Top
Freu mich, wenn ich Euch unterhalten kann.
Mitglied: 60730
60730 Sep 11, 2012 updated at 19:24:10 (UTC)
Goto Top
okokok...........

findstr is not recognized as an internal or external command operable program or batch file

bedeutet offensichtlich beim embedded ist das nicht dabei.
Da die batch aber doch eh auf dem Stick läuft, kopiere die exe einfach von nem Pro oder Windows 2003 oder was auch immer du sonst noch findest auf den Stick in den Ordner, wo die Batch steckt.

Denn beim USB Stick ist "zuviel" schreiben und löschen eher suboptimal in Sachen Lebensdauer.

Demnächst im Forum: Warum wird meine in .exe umgewandelte .bat als Virus erkannt.....muß mich noch einlesen..

Dann male aber ein großes

back-to-topAchtung: Nicht für den alten Sack mit der Augenklappe oben in die erste Zeile.

Oder besser such mal nach beiträgen (u.a von mir) warum dieses bat2exe gedöhnse voll in die Tonne getreten werden sollte.
Dazu eingach ein + gefolgt von nem Leerzeichen schreiben. Denn mit meinem Alzheimer passieren mir manchmal kosmische Sachen.

Und wegen dem com/2500 ich dachte gelesen zu haben, der com Ordner ist unter dem 2500 und den ballerst du doch via /S /Q gnadenlos wech.

Gruß N8 Over & out
Member: apejovic
apejovic Sep 11, 2012 at 19:56:20 (UTC)
Goto Top
Zitat von @60730:
Denn beim USB Stick ist "zuviel" schreiben und löschen eher suboptimal in Sachen Lebensdauer.
Firma zahlt......
+ Achtung: Nicht für den alten Sack mit der Augenklappe oben in die erste Zeile.
Dachte an V.I.P. Bereich für Dich.......nur lesen nicht kommentieren...........

Mit C fange ich erst garnicht an......dann wird es halt als Virus erkannt....pff

Danke.Schöne Woche noch.bis demnächst
Member: Pjordorf
Pjordorf Sep 11, 2012 at 20:12:00 (UTC)
Goto Top
Hallo,

Zitat von @apejovic:
Mit C fange ich erst garnicht an
Dann nimm Basic....

dann wird es halt als Virus erkannt....pff
Und mit der richtigen falschen Einstellung eines ich suche nach Viren auch wenn du es nicht willst Programm ist dann deine Exe weg gebratzt und du kommst wieder hierher. Ne ne.face-smile Lass das mit dem Bat to Exe gedöhns. Und ein verhindern das andere dein Kopierwerk sehen können kannst du damit eh nicht, da hierbei immer temporäre Dateien (hier deine BAT Datei in klarschrift) vorher abgelegt werden. Also, da der Nutzen gleich Null ist und du kein Virus bist spar dir den Tüdelkram das in einer Exe packen zu wollen. Den Virus bekommst du so eh nicht wegface-smile

Gruß,
Peter