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
GELÖST

Batch Prüfen ob Datei bereits in Ordner

Frage Entwicklung Batch & Shell

Mitglied: Herby-z

Herby-z (Level 1) - Jetzt verbinden

20.03.2008, aktualisiert 21.03.2008, 5228 Aufrufe, 3 Kommentare

Hallo Allerseits,

ich habe vor einiger Zeit mit euerer Hilfe folgendes Batchprogramm erstellt.
(Dateien mit der Bezeichnung 10000.tif bis 20000.tif werden von C:\Start in den Ordner C:\Ziel\Nummer\ verschoben)


::----snipp MoveIntoRechNo.bat

@echo on & setlocal enableDelayedExpansion & set "target=C:\Ziel" & set "src=C:\Start"
For /l %%i in (1000010000,1,1000020000) do set "fn=%%i" && if exist "%src%\!Fn:~-9!.*" (
if not exist "%target%\!Fn:~1,9!" md %target%\!Fn:~1,9!
move /-y %src%\!Fn:~-9!.* %target%\!Fn:~1,9!\ >nul && echo Gemoved: %target%\!Fn:~1,9!\!Fn:~-9!.*
)


Leider habe ich damals nicht daran gedacht überprüfen zu lassen ob die Datei bereits im Zielordner vorhanden ist.
Deshalb bleibt das Programm beim vorhandensein der Datei einfach stehen.

Ich würde jetzt gerne entweder diese Nummer überspringen oder besser noch diese Datei umbenennen
(z.B. die Datei 10000.tif gibt es bereits im Ordner C:\Ziel\10000\ dann soll entweder die neue oder bestehende Datei auf 10000_1.tif umbenannt werden bzw. wenn 10000_1.tif auch vorhanden dann 10000_2.tif)

Da ich in der Batcherstellung ein ziemliches Greenhorn bin hoffe ich das Ihr mir auch dieses mal weiterhelft.


Mit bestem Dank
Herby_z
Mitglied: bastla
20.03.2008 um 17:33 Uhr
Hallo Herby_z!

Ich habe mal Biber's doch recht kompakten Code ein wenig aufgedröselt und (hoffentlich) Deinem Wunsch entsprechend ergänzt:
01.
@echo off & setlocal 
02.
set "target=C:\Ziel" 
03.
set "src=C:\Start" 
04.
 
05.
for /l %%i in (1000010000,1,1000020000) do set "Fn=%%i" & call :ProcessFolder 
06.
goto :eof 
07.
 
08.
:ProcessFolder 
09.
if not exist "%src%\%Fn:~-9%.*" goto :eof 
10.
set "TargetFolder=%target%\%Fn:~1,9%" 
11.
if not exist "%TargetFolder%" md "%TargetFolder%" 
12.
for %%j in ("%src%\%Fn:~-9%.*") do call :ProcessFile "%%~fj" 
13.
goto :eof 
14.
 
15.
:ProcessFile 
16.
set Suffix= 
17.
set /a Counter=0 
18.
 
19.
:Loop 
20.
if not exist "%TargetFolder%\%~n1%Suffix%%~x1" goto :MoveIt 
21.
set /a Counter+=1 
22.
set "Suffix=_%Counter%" 
23.
goto :Loop 
24.
 
25.
:MoveIt 
26.
move /-y %1 "%TargetFolder%\%~n1%Suffix%%~x1">nul && echo Moved: "%TargetFolder%\%~n1%Suffix%%~x1" 
27.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Herby-z
21.03.2008 um 08:10 Uhr
Super funktioniert genau wie ich wollte.
Ich wusste auf euch ist Verlass.

Gruss
Herby
Bitte warten ..
Mitglied: Biber
21.03.2008 um 15:07 Uhr
@bastla
Ich habe mal Biber's doch recht kompakten Code...
*rotwerd*
Nenn es ruhig beim Namen... der damals von mir gepostete Schnipsel ist nicht lesbar oder wartbar, enthält keine Kommentarzeilen und nach 3 Monaten geht Neuschreiben eines anderen Batches schneller als das Nachvollziehen des Krypto-Codes.

Passiert manchmal im Verlauf einer angeregten Diskussion...

Danke jedenfalls für die Anpassung und Entschlüsselung.

Grüße
Biber
Bitte warten ..
Ä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 Doppelte Dateneinträge per Batch aus Datei löschen? HILFE (7)

Frage von freshman2017 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Windows Server

Exchange 2010 auf Windows Server 2016 und AD

(2)

Tipp von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Brauche Hilfe: Mit (schnellem) WLAN Strecke überbrücken (22)

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

Windows 10
Windows für Privatanwender "nicht mehr handhabbar" (11)

Frage von FA-jka zum Thema Windows 10 ...

Basic
Programmierung von Windows Programmen (10)

Frage von Ghost108 zum Thema Basic ...