Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 1291 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Doppelte Dateneinträge per Batch aus Datei löschen? HILFE (7)

Frage von freshman2017 zum Thema Batch & Shell ...

Batch & Shell
Datei nach Erstellungsdatum verschieben (2)

Frage von Kugelschreiber1 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Datei: PDF Dateien verschieben, umbenennen und löschen (4)

Frage von F0rcehunter zum Thema Batch & Shell ...

Batch & Shell
Dateien umbennen und verschieben mit bash (3)

Frage von sbsnewbie zum Thema Batch & Shell ...

Neue Wissensbeiträge
Viren und Trojaner

Ransomware or Wiper? RedBoot Encrypts Files but also Modifies Partition Table

Information von BassFishFox zum Thema Viren und Trojaner ...

Notebook & Zubehör

WOL bei HP Notebooks

(6)

Erfahrungsbericht von Henere zum Thema Notebook & Zubehör ...

LAN, WAN, Wireless

Neue Cisco Catalyst-Serie 9000

Information von Kuemmel zum Thema LAN, WAN, Wireless ...

Heiß diskutierte Inhalte
Windows 10
Netzwerkkarte schaltet sich erst nach dem Logon ein (23)

Frage von DerWoWusste zum Thema Windows 10 ...

Windows Server
Seit IP Umstellung DC DNS Fehler (18)

Frage von Yaimael zum Thema Windows Server ...

Netzwerke
Mobile Einwahl IPSec VPN von iPhone iPad T-Mobile zur Pfsense (16)

Frage von Spitzbube zum Thema Netzwerke ...

Weiterbildung
gelöst Fest angestellter Admin oder Systemhaus Admin mit Kundenbetreuung? (15)

Frage von Voiper zum Thema Weiterbildung ...