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- Dateien mit doppeltem String Charater verschieben

Frage Entwicklung Batch & Shell

Mitglied: christianV6

christianV6 (Level 1) - Jetzt verbinden

11.07.2014, aktualisiert 18.07.2014, 1250 Aufrufe, 7 Kommentare, 1 Danke

Hallo zusammen,

ich bitte um eure Hilfe, benötigt wird ein Batch-Tool mit dem man Dateien verschiebt.
Und zwar liegen mir lokal mehrere PDF's vor:
1000040_140.pdf
1000040_798.pdf
2999123_123.pdf
......

Ich möchte jetzt nur die Dateien in einen anderen Ordner verschieben, bei denen die Zeichenkette [die erste 7 Stellen] identisch ist.
Allerdings gibt es auch PDF's die nicht nur 2 mal, sondern auch 20 mal vorkommen, diese sollen dann in einen extra Ordner verschoben werden..

Aufgrund meiner mangelnden Batch Kenntnisse wende ich mich in aller Hoffnung an euch.
LG Christian

Mitglied: Endoro
12.07.2014, aktualisiert um 05:31 Uhr
Hey,
Das hatten wir kürzlich hier ganz ähnlich.
Gruss, Endoro
Bitte warten ..
Mitglied: christianV6
12.07.2014 um 19:12 Uhr
Hey Endoro,

Prima das war schon sehr hilfreich (: danke.
Habe jetzt noch das Problem, das ein extra Ordner erstellt wird und es wird jedes Dokument verschoben.
Ich wollte das nur das die Dokumente verschoben werden die doppelt oder mehrfach vorkommen..

Snippet vom Kollegen: Friemler:

@echo off & setlocal

set "SrcDir=E:\Test"
set "DstDir=E:\Test"

for %%f in ("%SrcDir%\*.pdf") do (
call :ProcessFile "%%~f"
)
exit /b

:ProcessFile
set "FilePath=%~dp1"
set "FileName=%~nx1"
set "Folder=%DstDir%\%FileName:~0,6%"

if not exist "%Folder%" md "%Folder%"
move "%FilePath%%FileName%" "%Folder%\%FileName%" > NUL
exit /b
Bitte warten ..
Mitglied: Endoro
13.07.2014 um 06:57 Uhr
Hey,
Dann müsstest du noch mal genau sagen, was wohin soll:
- String doppelt --> Duplikat in anderen Ordner
- String 20 mal --> was in extra Ordner? Auch was in anderen Ordner?
- was wird mit (String > 2) && (String ≠ 20)?
- weitere Regeln?

Gruss, Endoro.
Bitte warten ..
Mitglied: christianV6
13.07.2014 um 11:48 Uhr
hey,
also Pdf's die nur 2 mal vorkommen sollen in einen Ordner verschoben werden. PDF's die mehrmals vorkommen als 2 mal sollen in einen Ordner verschoben werden und PDF's die nur einem Vorkommen sollen einfach in dem Ordner bleiben. Vielen Dank für die Hilfe schon mal.

LG Grüße Christian
Bitte warten ..
Mitglied: christianV6
17.07.2014, aktualisiert um 10:10 Uhr
So ich hab hier mal was gebastelt:
Es funktioniert leider nocht nicht ganz, das Script erkennt ob sich eine Datei (Bsp: 1054400,_14011233123.pdf) oder mehrere Datein im Ordner befinden.

Leider funktionert die IF Abfrage nocht nicht.
Hoffe Ihr könnt mir weiterhelfen. Danke LG

01.
  
02.
@echo off 
03.
set "search=^" 
04.
setlocal enableDelayedExpansion 
05.
echo(!$1!|findstr /r /c:"!search!" >nul && ( 
06.
  echo FOUND - Es wurden Dateien gefunden 
07.
) || ( 
08.
 echo NOT FOUND - Der Ordner enthält keine Datein ! 
09.
   
10.
11.
pause 
12.
 
13.
:nosource 
14.
Set /P _srcdir="Eingabe des Quellverzeichnis: " 
15.
If NOT Exist "%_srcdir%" Echo Quellverzeichnis %_srcdir% existiert nicht, Eingabe wiederholen&Goto nosource 
16.
Set /P _dstdir="Eingabe des Zielordners: " 
17.
If NOT Exist "%_dstdir%" MD "%_dstdir%" 
18.
:Abfrage 
19.
@echo off 
20.
 
21.
 
22.
IF !search! GTR !search!( 
23.
rem hier ist ein fehler drinne hier sollte eig der Vergelich statt finden ob die Datei Zweimal voranden ist 
24.
 
25.
 echo Ist mehrmals vorhanden die DAtei 
26.
 echo Die Dateien werden nun verschoben!  
27.
 for /R %%a IN (%search%) do move "%%a" "%_dstdir%"  
28.
 
29.
) ELSE ( 
30.
 
31.
echo Datei ist nur einmal vorhanden 
32.
echo Datei bleibt im Ordner 
33.
34.
 
35.
pause
Bitte warten ..
Mitglied: Endoro
LÖSUNG 18.07.2014, aktualisiert um 09:05 Uhr
Hey,
neben der Nutzung von findstr zum Zählen kannst du Arrays verwenden. In diesem Fall wäre der erste Teil des Dateinamens der Index und die Häufigkeiten des Vorkommens die Elemente.
In der Ausgabe des Codes kannst du das nachvollziehen:
01.
@ECHO OFF &SETLOCAL disableDelayedExpansion 
02.
set "Quellordner=test" 
03.
set "Zielordner2=x:\Extra Ordner" 
04.
set "Zielordner3=x:\Anderer Ordner" 
05.
for /f "tokens=1*delims=_" %%a in ('dir /b /a-d "%Quellordner%\*_*.pdf"') do set /a .%%a+=1 
06.
for /f "tokens=1*delims==." %%a in ('set .') do ( 
07.
	<nul set /p "=%%b Datei(en) mit %%a_*.pdf " 
08.
	if %%b equ 1 (echo(keine Aktion) else ( 
09.
		if %%b equ 2 (echo(move "%Quellordner%\%%a_*.pdf" "%Zielordner2%") else ( 
10.
			echo(move "%Quellordner%\%%a_*.pdf" "%Zielordner3%" 
11.
12.
13.
)
Gruss, Endoro.
Bitte warten ..
Mitglied: christianV6
18.07.2014 um 09:08 Uhr
Hey Endoro,

vielen vielen vielen Dank für deine Hilfe, das Script funktioniert super (:
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Per Batch Dateien in einen Ordner - ext. Festplatte übertragen (2)

Frage von tocksick zum Thema Batch & Shell ...

Windows Server
Zuordnung von Netzlaufwerken mit Hilfe von Batch-Dateien (4)

Frage von doc-jochim zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...