max-der-grosse
Goto Top

Batch-Datei schreiben

Ich habe das Problem demnächst über 2000 Dateien zuordnen zu müssen...

Diese Dateien haben alle den gleichen Dateityp (*.tif). Sie ändern sich nur im Namen.
Nun möchte ich gerne eine Batchdatei erstellen, die mir alle Daten in vorher erstellte Ordner quasi hineinsortiert.
Bsp.:

a.tif in Verzeichnis/OrdnerA
b.tif in Verzeichnis/OrdnerB

Hätte da jemand einen Ansatz bzw. Idee?
Ich muss dazu sagen, dass ich noch nie eine Batch erstellt habe. face-sad


Grüße Max

Content-Key: 4096

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

Printed on: April 16, 2024 at 08:04 o'clock

Member: meto
meto Nov 30, 2004 at 15:00:59 (UTC)
Goto Top
Hallo!
Also ich verstehe zwar, dass du versuchen willst bestimmte Dateien in einen bestimmten Ordner zu kopieren. Ich verstehe aber noch nicht so richtig an welchem Parametern du das festmachen möchtest.

Soll die Datei test.tif ind den Order Verzeichnis\test und die Datei probe.tif in den Ordner Verzeichnis\probe oder wie soll der Rechner erkennen Welche Datei wohin soll?

Ein Anhaltspunkt zur genauen Zuornungsweise währe schon sehr Hilfreich.

Gruß
Ronny
Member: Max-der-Grosse
Max-der-Grosse Nov 30, 2004 at 15:08:22 (UTC)
Goto Top
Als Vorlage:

5906gef.tif -->in den Ordner "GEF"
5906gks.tif -->in den Ordner "GKS"
5906grs.tif -->in den Ordner "GRS"

Auszumachen nur an den letzten drei Buchstaben vor .tif.

Anhand dieser Parameter soll der rechner die erkennung vornehmen.

Gruß Maxe
Mitglied: 6741
6741 Nov 30, 2004 at 15:09:52 (UTC)
Goto Top
Hi,

hier die Lösung:


move c:\ordner_alle\a*.* C:\Ordner_a\
move c:\ordner_alle\b*.* C:\Ordner_b\

ab in den editor und als move.bat in das Verzeichniss deiner Wahl speichern.

Immer wenn du es über den task startest, copiert es die Dateien in die Verzeichnisse.
Mitglied: 6741
6741 Nov 30, 2004 at 15:11:31 (UTC)
Goto Top
wo du den stern setzt ist egal, ob vor dem a oder danach.

also es klappt bei mir suuuuuper !!!
Member: Max-der-Grosse
Max-der-Grosse Nov 30, 2004 at 15:13:43 (UTC)
Goto Top
Ich probiers gleich mal aus.
Ich geb Dir dann noch feedback.

Bis denne
Member: meto
meto Nov 30, 2004 at 15:17:48 (UTC)
Goto Top
Ich vermute jetzt mal, dass du die Ordner auch nicht von Hand anlegen möchtest, sonder dass die sich auch von "alleine" erstellen sollen.
Um wieviele unterschiedliche Ordner würde es sich dann handeln? Es bestünde die Möglichkeit deine Kürzel (z. B. "gef") nacheinander, getrennt durch einen Absatz in eine Textdatei zu schreiben und die dann mit der Batschdatei abzuarbeiten. Wenn das aber zuviele sind bleibt dir nur VBScripting.
Member: Max-der-Grosse
Max-der-Grosse Nov 30, 2004 at 15:56:50 (UTC)
Goto Top
Also es klappt einfach super. Danke schön.

Neues Problem:

Da das ja nun 2000 Daten sind und das Batch-File nicht zu groß geraten soll, muss eine Variable rein, in der der Pfad abgespeichert werden soll. Also dass ich den Pfadnamen nur einmal bzw. zweimal eingeben muss. (Quelle --> Ziel)

Grüße Max
Member: fritzo
fritzo Nov 30, 2004 at 22:05:30 (UTC)
Goto Top
@echo off

set alle=c:\temp\ordner_alle
set gef=c:\temp\gef\
set gks=c:\temp\gks\
set grs=c:\temp\grs\

move %alle%\*gef.tif %gef%
move %alle%\*gks.tif %gks%
move %alle%\*grs.tif %grs%

@echo isch abe fertisch
Member: Max-der-Grosse
Max-der-Grosse Dec 01, 2004 at 09:35:31 (UTC)
Goto Top
Vielen Dank!!
Ich habe es etwas anders gemacht.

Hier mein Batch:
@echo OFF
set x=C:\Dokumente und Einstellungen\max\Desktop\MASFG_Geodaten\
set y=C:\TESTMAFG\

echo %x%
echo %y%

echo Jetzt gehts los bei Knopfdruck
echo TK 100 Dateien werden in das entsprechende Verzeichnis kopiert
Pause

echo TK 100 Dateien werden in das entsprechende Verzeichnis kopiert

move "%x%c*gef.*" "%y%GEF"
move "%x%c*grs.*" "%y%GRS"
move "%x%c*gks.*" "%y%GKS"
move "%x%c*iso.*" "%y%ISO"
move "%x%c*wad.*" "%y%WAD"
move "%x%c*str.*" "%y%STR"
move "%x%c*veg.*" "%y%VEG"
move "%x%c*stg.*" "%y%STG"
move "%x%c*pp.*" "%y%"

echo TK 50 Dateien werden in das entsprechende Verzeichnis kopiert
Pause


move "%x%l*gef.*" "%y%GEF"
move "%x%l*grs.*" "%y%GRS"
move "%x%l*gks.*" "%y%GKS"
move "%x%l*iso.*" "%y%ISO"
move "%x%l*wad.*" "%y%WAD"
move "%x%l*str.*" "%y%STR"
move "%x%l*veg.*" "%y%VEG"
move "%x%l*stg.*" "%y%STG"
move "%x%l*pp.*" "%y%"

echo TK25 Dateien werden in das entsprechende Verzeichnis kopiert
Pause


move "%x%*gef.*" "%y%GEF"
move "%x%*grs.*" "%y%GRS"
move "%x%*gks.*" "%y%GKS"
move "%x%*iso.*" "%y%ISO"
move "%x%*wad.*" "%y%WAD"
move "%x%*pp.*" "%y%"

@echo De Döner is fetisch

Also das geht super. Vorschläge für eventuelle Verkürzungen nehme ich gerne entgegen.
Falls ihr Euch wundert, warum im Dateinamen noch l*gks.* oder c*gks.* steht, dann liegt das an der erkennung der Karten. c steht für TK100, l für TK50 und nichts für TK25.

Auf jeden Fall vielen Dank für die schnelle Hilfe.

Grüße Max
Mitglied: 4263
4263 Dec 19, 2004 at 21:00:21 (UTC)
Goto Top
hi firewalldevil!

also, bei mir geht nicht... ich habe einen ordner "alle" in c:\ angelegt, also: c:\alle
dort hinein habe ich die dateien "abc123", "abc456" und "abc789" gepackt, alles *.txt-dateien.

jetzt will ich die in veschiedene ordner packen, ähnlich wie max_der_grosse. also "abc123" soll in den ordner "123", "abc456" soll in den ordner "456", etc. alle diese ordner sollen in c:\gespeichert sein, also zb c:\123.

meine batch-datei sieht nun so aus:

move c:\alle\*123.* c:\123
move c:\alle\*456.* c:\456
move c:\alle\*789.* c:\789

was ist falsch? ich habe auch schon alles mit einem \ nach dem zielverzeichniss versucht, er macht mir trozdem keine ordner, sondern nur "dateien"... naja, er erkennt nicht einmal was es für ein dateityp ist. es sind dann einfach nichterkannte dateien in c:\
wieso hast du nach dem dateinamen in deinem bsp .* angegeben? muss man da in meinem fall .txt eingeben??

was habe ich falsch gemacht??

greets racer2004
Member: fritzo
fritzo Dec 20, 2004 at 05:21:43 (UTC)
Goto Top
Hi,

also ich hab das mal nachgestellt und bei mir funktioniert es einwandfrei (Windows XP Pro). Was hast Du für ein System und was für eine Version von move?

Ruf mal "move /?" auf und schau Dir noch mal die Syntax an (obwohl - die von Dir gelisteten Befehle funktionieren hier ohne Probleme).

move wird nicht nur zum Verschieben, sondern auch zum Umbenennen von Files verwendet; evtl. mal in die Richtung suchen?

Grüße,
fritzo
Mitglied: 4263
4263 Dec 20, 2004 at 10:54:59 (UTC)
Goto Top
hallo fritzo,

also, ich habe (leider) win XP home... face-sad

und was meinst du mit der version von move?? also, es kommt ja nicht wirklich darauf an, unter welchem namen man die batchdatei speichert!?

ja, ich werde da mal einwenig schauen. was ich noch fragen wollte: geht das ganze auch mit copy? also, dass es einfach kopiert und nicht verschiebt/umbenennt?

greets racer2004
Member: Max-der-Grosse
Max-der-Grosse Dec 20, 2004 at 11:05:55 (UTC)
Goto Top
Hallo Racer.

ich poste hier mal meine komplette Batch.
Natürlich habe ich Verzeichnisse erst angelegt:
@echo OFF

echo Ordner TK100 wird eingelesen...

set a= tk100

echo Ordner TK50 wird eingelesen...

set b= tk50

echo Ordner TK25 wir eingelesen...

set c= tk25


cd %c%
ECHO Verzeichnisse für den Ordner TK25 werden angelegt...

MKDIR gef
MKDIR gek
MKDIR gew
MKDIR gks
MKDIR grs
MKDIR iso
MKDIR wad
cd..

cd %b%
ECHO Verzeichnisse für den Ordner TK50 werden angelegt...

MKDIR gar
MKDIR gef
MKDIR gek
MKDIR gks
MKDIR grs
MKDIR iso
MKDIR stg
MKDIR str
MKDIR veg
MKDIR wad
cd..

cd %a%
ECHO Verzeichnisse für den Ordner TK100 werden angelegt...
MKDIR gef
MKDIR gek
MKDIR ges
MKDIR gew
MKDIR gks
MKDIR grs
MKDIR gru
MKDIR iso
MKDIR sch
MKDIR stg
MKDIR str
MKDIR veg
MKDIR wad
cd..

echo Verzeichnisse wurden erfolgreich angelegt...
Pause

REM Quelle/Ziel TK100
set v= E:\Geodaten\masfg\lvermgeo_raster_gesamt\tk100\
set w= E:\Geodaten\masfg\lvermgeo_raster_gesamt\tk100\

REM Quelle/Ziel TK50
set x= E:\Geodaten\masfg\lvermgeo_raster_gesamt\tk50\
set y= E:\Geodaten\masfg\lvermgeo_raster_gesamt\tk50\

REM Quelle/Ziel TK25
set u= E:\Geodaten\masfg\lvermgeo_raster_gesamt\tk25\
set z= E:\Geodaten\masfg\lvermgeo_raster_gesamt\tk25\


echo Jetzt gehts los bei Knopfdruck...
echo TK 100 Dateien werden in das entsprechende Verzeichnis kopiert...
Pause

echo TK 100 Dateien werden in das entsprechende Verzeichnis kopiert...
echo %v%c*gef.* %w%gef


move %v%c*gef.* %w%gef
move %v%c*gek.* %w%gek
move %v%c*ges.* %w%ges
move %v%c*gew.* %w%gew
move %v%c*gks.* %w%gks
move %v%c*grs.* %w%grs
move %v%c*gru.* %w%gru
move %v%c*iso.* %w%iso
move %v%c*sch.* %w%sch
move %v%c*stg.* %w%stg
move %v%c*str.* %w%str
move %v%c*veg.* %w%veg
move %v%c*wad.* %w%wad
move %v%c*pp.* %w%

echo TK 50 Dateien werden in das entsprechende Verzeichnis kopiert...
Pause

move %x%l*gar.* %y%gar
move %x%l*gef.* %y%gef
move %x%l*gek.* %y%gek
move %x%l*grs.* %y%grs
move %x%l*gks.* %y%gks
move %x%l*iso.* %y%iso
move %x%l*wad.* %y%wad
move %x%l*str.* %y%str
move %x%l*veg.* %y%veg
move %x%l*stg.* %y%stg
move %x%l*pp.* %y%

echo TK25 Dateien werden in das entsprechende Verzeichnis kopiert...
Pause
move %u%*gef.* %z%gef
move %u%*gek.* %z%gek
move %u%*gew.* %z%gew
move %u%*grs.* %z%grs
move %u%*gks.* %z%gks
move %u%*iso.* %z%iso
move %u%*wad.* %z%wad
move %u%*pp.* %z%

@echo Kacheln wurden erfolgreich verschoben


Du kannst auch versuchen die Pfade jeweils in Anführungszeichen zu setzen.

Bsp.: move "c:\alle\*123.*" "c:\123"


Gruß Der Große