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
Kommentar vom Moderator Biber am 22.09.2009 um 09:39:28 Uhr
Verschoben von "Windows" nach "Batch & Shell".
GELÖST

Datei in gleichnamigen Ordner kopieren per Batch

Frage Entwicklung Batch & Shell

Mitglied: tomnight2002

tomnight2002 (Level 1) - Jetzt verbinden

22.09.2009, aktualisiert 09:39 Uhr, 7780 Aufrufe, 13 Kommentare

Leider habe ich durch Suchen nichts passendes gefunden. Ich suche die Möglichkeit Dateien aus einem Verzeichnis in einen gleichnamigen Ordner zu kopieren.

Hallo zusammen. Ich habe ein kleines Problem und hoffe hier gibt es dazu Hilfe oder ein paar Tipps.
Ich habe in einem Ordner Dateien erzeugt per Scanner. Diese tragen den Namen 12345.tif, 12346.tif, 12347.tif .....99999.tif

Diese Dateien sollen jetzt in gleichnamige Ordner verschoben werden. Dabei muss dann aber falls möglich der Dateiname um einen Suffix erweitert werden.

Also die Datei 12345.tif soll in den bestehnden Ordner 12345 verschoben werden. Sollte dort jetzt eine Datei mit dem selben Namen enthalten sein, muss der Name um ein Suffix erweitert werden
Bsp:

Ordner 12345 enthält bereits die Datei 12345_1.tif und 12345_2.tif so soll jetzt die Datei umbenannt werden in 12345_3.tif und in diesen Ordner verschoben werden.

Sollte dies nun nicht klappen, werde ich meine Datei eben am Scanner so erzeugen lassen.
D.h. ich gebe beim Drucken des Barcodes 12345_1 aus und habe nun die Datei schon mit dem richtigen Namen.

Jetzt müsste das Programm oder die Batch prüfen was steht vor dem _1 also 12345 und kopiert diese Datei in den Ordner 12345


Ich hoffe ich habe das so erklärt, dass ihr was damit anfangen können.
Für schnelle Hilfe wäre ich sehr dankbar.

Mit freundlichen Grüßen
Thomas
Mitglied: pieh-ejdsch
22.09.2009 um 13:54 Uhr
Hi Thomas,

den Ornder der Tif auf den Batch ziehen oder im Batch %~1
durch den Pfad und name des Ordners ersetzen. in Zeile 2 und 3

01.
@echo off &setlocal 
02.
if not exist "%~1." goto :eof 
03.
pushD "%~1" 
04.
for %%i in (*.tif) do set "name=%~ni" & call :move 
05.
popD 
06.
goto :eof 
07.
:move 
08.
if exist "%name%" goto :test 
09.
mkdir "%name%" 
10.
move "%name%.tif" "%name%" & goto :eof 
11.
:test 
12.
set /a nr=1 
13.
for %%i in ("%name%\%name%_*.tif") do set /a nr+=1 
14.
move "%name%.tif" "%name%\%name%_%nr%.tif" 
15.
goto :eof
Gruß Phil
Bitte warten ..
Mitglied: tomnight2002
22.09.2009 um 14:34 Uhr
Hallo Phil,
vielen Dank für die Mühe und deine Hilfe. Leider klappt es nicht ganz bei mir.
Ich habe zum Testen den Ordner d:\astra\quelle angelegt.
Dort liegen nun meine Bilder (*.tif)

Weiter habe ich das Programm wie folgt verändert mit den Pfadangaben

set "quelle=D:\Astra\quelle"
echo %quelle% ( Wollte sehen ob der Pfad stimmt ist also nicht wichtig)
rem @echo off & setlocal (Rem, damit ich sehe was los ist)
if not exist "%quelle%" goto :eof
pushD "%quelle%"
for %%i in (*.tif) do set "name=%~i" & call :move
popD
goto :eof
:move
if exist "%name%" goto :test
mkdir "%name%"
move "%name%.tif" "%name%" & goto ::eof

:test
set /a nr=1
for %%i in ("%name%\%name%_*.tif") do set /a nr+=1
move "%name%.tif" "%name%\%name%_%nr%.tif"
goto :eof

Dos gibt mir nun folgenden Fehler zurück

D:\Astra\quelle>kopiere

D:\Astra\quelle>set "quelle=D:\Astra\quelle"

D:\Astra\quelle>echo D:\Astra\quelle
D:\Astra\quelle

D:\Astra\quelle>rem @echo off & setlocal

D:\Astra\quelle>if not exist "D:\Astra\quelle" goto :ende1

D:\Astra\quelle>pushD "D:\Astra\quelle"
Die folgende Verwendung des Pfadoperators zur Ersetzung eines Batchparameters
ist ungültig: %~i" & call :move


Geben Sie CALL /? oder FOR /? ein, um herauszufinden, welche Formate gültig
sind.
"♥" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

D:\Astra\quelle>for %i in (*.tif) do set "name==%~i" & call :move

Was habe ich falsch gemacht??? - Hast du noch eine Idee ??

Vielen Dank schon mal für deine Antwort.
Mit freundlichen Grüßen
Thomas
Bitte warten ..
Mitglied: Biber
22.09.2009 um 18:47 Uhr
Moin tomnight2002,

willkommen im Forum.

Ersetze bitte das einfache Prozentzeichen durch ein doppeltes vor der FOR-Laufvariablen in PHs Zeile 4.

Richtiger: for %%i in (*.tif) do set "name=%%~ni"

Grüße
Biber
Bitte warten ..
Mitglied: pieh-ejdsch
22.09.2009 um 19:39 Uhr
hach sowas...

bekomme ich dann den Preis für Schusselfehler nun doch irgenwann

Gruß Phil
Bitte warten ..
Mitglied: Biber
22.09.2009 um 20:41 Uhr
<OT>

Ach weißt DU, PH,

mir ist es lieber, solche Schusselfehler zu lesen (oder auch zu machen) in selbst runtergetippseltem Code als irgendein Skript zu korrigieren oder zu warten, das aus drei oder mehr lose zusammengetackerten Copy&Paste-Blöcken aus verschiedenen Quellen und von verschiedenen Autoren besteht.

Bei Deinen Schnipseln mögen Tippfehler enthalten sein, aber die Programmlogik, Nachvollziehbarkeit und -Lesbarkeit ist gegeben.

Und damit lässt sich auf Dauer mehr anfangen als mit einem Skript der Gütekategorie "funktionierend, aber ich auch nicht so genau, was da passiert".

Grüße
Biber
</OT>
Bitte warten ..
Mitglied: tomnight2002
23.09.2009 um 10:41 Uhr
Hallo Leute. VIELEN DANK!!!!!!
Echt klasse und super schnell gelöst. Das klappt jetzt alles so, wie ich es mir vorgestellt habe.
Finde es richtig gut, wenn einem so schnell geholfen wird. Ich hoffe ich kann auch einmal hier im Forum jemandem Helfen.

Gruß Thomas
Bitte warten ..
Mitglied: Iceman
01.04.2011 um 16:03 Uhr
Hallo Thomas,

könntest du bitte deinen entgültigen Code hier posten.

Benötige das selbe, aber ich habe noch nicht verstanden, wie die Endversion aussehen muss.

Ich möchte übrigens damit mkv-Dateien/Ordner bearbeiten/verarbeiten.

Gruß Ice aus MVP
Bitte warten ..
Mitglied: pieh-ejdsch
01.04.2011 um 18:56 Uhr
moin Iceman,

Hier haste eine etwas wartbarere Version
01.
@echo off &setlocal 
02.
if not exist "%~1." goto :eof 
03.
 
04.
:: Einstellung für Datentypen 
05.
set "DateiTyp=.MVP" 
06.
 
07.
pushD "%~1" 
08.
for %%i in (*%DateiTyp%) do set "name=%%~ni" & set "EXT=%%~xi" & call :move 
09.
popD 
10.
goto :eof 
11.
:move 
12.
if exist "%name%" goto :test 
13.
mkdir "%name%" 
14.
move "%name%%EXT%" "%name%" & goto :eof 
15.
:test 
16.
set /a nr=1 
17.
for %%i in ("%name%\%name%_*%EXT%") do set /a nr+=1 
18.
move "%name%%EXT%" "%name%\%name%_%nr%%EXT%" 
19.
goto :eof
Gruß Phil
Bitte warten ..
Mitglied: Iceman
01.04.2011 um 21:38 Uhr
Hey Phil

genau das meinte ich. Ich werd bekloppt.

Vielen lieben Dank.

Schönes Wochenende.

PS. solche Helfer braucht das Land (Forum)
Bitte warten ..
Mitglied: bastla
01.04.2011 um 21:44 Uhr
[OT] @PH
set "DateiTyp=MVP"
gefällt mir irgendwie ...
Hinsichtlich der angefügten Nummer würde ich mich aber eher nicht auf das Abzählen der vorhandnen Files verlassen, sondern einfach so lange hochzählen, bis es keine Datei mit der aktuellen Nummer als Suffix gibt:
01.
set /a nr=1  
02.
:Schleife 
03.
if exist "%name%\%name%_%nr%%EXT%" (set /a nr+=1 & goto :Schleife) 
04.
move "%name%%EXT%" "%name%\%name%_%nr%%EXT%"  
05.
goto :eof
Grüße
bastla
[/OT]
Bitte warten ..
Mitglied: pieh-ejdsch
02.04.2011 um 00:34 Uhr
moin bastla,

set "DateiTyp=MVP"
war ja auch gar net so Geplant. - Liegt aber irgendwie in meiner Natur, das es immer wieder auf solche Sachen herausläuft einmal selbst Brain anzuschalten (warum auch immer) - ich kann aber nix dafür...

im Grunde genommen geht es ja "nur" um das Verschieben einer Datei mit dem Namen XYZ in den Ordner XYZ.
(im Stillschweigenden) gehe ich davon aus.
wenn die Datei "XYZ.ext" schon in den Ordner drin ist, sollte doch eine solche For-Schleife ausreichen da die ja Übersetzt ( "XYZ*.ext") alle Dateien, welche mit XYZ beginnen und der Extension ".ext" abzählen.

ja eigentlich müsste es ja:
01.
set /a nr = 0
heissen, da ja schon bei der Existenz vom 1. File an eins höher gezählt wird.
Zitat von tomnight2002
Also die Datei 12345.tif soll in den bestehnden Ordner 12345 verschoben werden. Sollte dort jetzt eine Datei mit dem selben Namen enthalten sein, muss der Name um ein Suffix erweitert werden
Aber ich gehe davon aus,: -> das File ohne Nummer ist das File welches die Nummer 1 bekommen hätte. -> Null heisst ja auch es ist nichts da.

Gruß Phil
Bitte warten ..
Mitglied: bastla
02.04.2011 um 00:39 Uhr
@PH
Was ich gemeint hatte: Wenn, aus welchen Gründen auch immer, nur die Dateien "XYZ_1.ext" und "XYZ_3.ext" existieren, wird beim bloßen Abzählen die nächste Datei auch "XYZ_3.ext" benannt, während bei meinem Ansatz die Lücke (mit "XYZ_2.ext") gefüllt würde ...

Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
02.04.2011 um 01:04 Uhr
ja aus dem Gesichtspunkt hatte ich das noch gar net Betrachtet. Da ist Dein seperates Abzählen-und-prüfen wirklich besser.

da führt dann nur noch das "XYZ_2.ext" - falls es älter ist als "XYZ_3.ext" in die Datumsirre - was letztendlich im Auge (in der Wartung) des Anwenders liegt...

Gruß Phil
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst Ordner per Batch verschieben, Datei kopieren (2)

Frage von Shape.Shifter zum Thema Batch & Shell ...

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

Frage von Daedrafaction zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (19)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (19)

Frage von patz223 zum Thema Windows Userverwaltung ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (15)

Link von Penny.Cilin zum Thema Viren und Trojaner ...