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

speziell nummerierte Ordner in andere nummerierte Ordner verschieben

Frage Entwicklung Batch & Shell

Mitglied: ZwiebelMax

ZwiebelMax (Level 1) - Jetzt verbinden

15.02.2006, aktualisiert 19.02.2006, 4673 Aufrufe, 6 Kommentare

<s>HIIIILFEEEEE!!!</s>--->[Edit] Nicht nötig bei uns. Mit freundlichen Grüßen Biber[/Edit]

ich brauch ganz dringend die Hilfe von jemandem der sich mit Batches auskennt, ich hab nämlich noch nie was damit gem8, bin also ein volln00b in diesem Bereich -.-

bin Azubi und soll ein Archiv erstellen, unter anderem müsste ich tausende Nummerierte Ordner (F1K1,F2K1, F3K1) in andere Ordner (Filiale_1, Filiale_2, Filiale_3) verschieben, wobei ich die letzteren Ordner erst erstellen müsste, wenn ich das alles per Hand machen muss sterbe ich an Hirntod!

ich habe auch schon ähnliche threads gefunden, aber da ich wie gesagt ein absoluter noob bin hab ichs nich hinbekommen -.-

beispiel Problemstellung

F1K1
F1K2
F1K3
F2K1
F2K3
F4K99

alle Ordner mit F1 (Filiale1) am anfang müssen in einen Ordner Filiale_1 abgelegt werden, also ist nur die Zahl nach dem F relevant, und dann halt dieses prinzip beibehalten, alle F2K... in Filiale_2 Ordner usw, (es geht nicht unbedingt im alphabet, damit meine ich dass es durchaus sein kann dass nach F3Kirgendwas F6Kirgendwas kommt, die dann in die Ordner Filiale_3 und Filiale_6 verschoben werden müssten (und vorher müssten wie schon gesagt die Ordner Filiale_3 und Filiale_6 erstellt werden)


also hier nochmal ne konkrete Bauanleitung für das was ich suche:
der batch muss einen ordner für jede verschiedene Zahl nach dem F bei z.B. F3K1 anlegen und dann alle F3K* Ordner in diesen Ordner (bei diesem beispiel wäre es der Ordner Filiale_3) verschieben, also würden bei dem batch ganz viele Filiale_* ordner erstellt werden und dann die F*K* Ordner geordnet darein verschoben werden ...


wäre nett wenn sich jemand erbarmen würde .... er kann dann von sich behaupten er hätte ein Leben gerettet ;)
uund es wäre auch net das ganze wenn möglich ein kleinwenig zu kommentieren, dann könnte ich das ganze bei gegebenheit auf andere sachen umändern, wäre sehr hilfreich ... dankeschööön
Mitglied: Janni
15.02.2006 um 11:03 Uhr
Etwas anderer Lösungsvorschlag: einfach nach F1* suchen, alle markieren und verschieben, nach F2* suchen, etc. -> fertig in zwei Minuten.

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: ZwiebelMax
15.02.2006 um 11:57 Uhr
das ist ja genau das was ich im moment mache, nur dass es sehr viel mehr ordner sind, ich wollte da einfach nen batch laufen lassen der das alles einsortiert, denn es sind glaube ich zum schluss so um die 2000 ordner die in diese Filiale_1 usw verschoben werden müssen, und diese Filiale_1 usw Ordner müssen erst angelegt werden, die existieren noch nicht, und die Filialnummer richtet sich nach der zahl nach dem F, beispiel: wenn ein Ordner F9K7 existiert müsste der Batch einen Ordner erstellen der Filiale_9 heißt und dann den F9K7 Ordner darein verschieben, und das bei so vielen Dateien jedesmal einzeln zu machen ... da wirste bekloppt ...

trotzdem danke!
Bitte warten ..
Mitglied: maneich
16.02.2006 um 01:20 Uhr
Hallo,

Wenn diese Ordner alle in einem übergeordneten Verzeichnis liegen, kannst Du das mit

dir /o:g /s /b Übergordnetes_Verzeichnis

machen. Also z.B.
-----------------------------snip
for /f "tokens=*" %%e in ('dir /o:g /s /b Übergordnetes_Verzeichnis') do call: fold_cop %%e
goto eof

:fold_cop
x=%1
if .==%x:~-4, 1% exit
set y=%x:~-3, 1%
If not exist Laufw:\Verzeichnispfad\Filiale_1 md Laufw:\Verzeichnispfad\Filiale_%y%
xcopy /y %1 Laufw:\Verzeichnispfad\Filiale_%y%>nul
goto eof
-------------------------snip

In for /f ... listest Du alle Daten auf, wobei die Verzeichnis als erstes gelistet werden
In fold_cop wird als erstes über den " . " an viertletzter Stelle abgefragt ob es eine Datei ist.
Wenn das sowohl die viert- als auch die fünftletzte Stelle sein kann (z.B. html) mußt Du mit "find" arbeiten

echo %x%|find ".">nul
if not errorlevel 1 exit

Dann sind auch alle Verzeichnisse abgearbeitet und die Batch wird beendet
Für die Filiale ist ja nur die Ziffer hinter F zuständig, also die drittletzte Stelle. Kann diese auch 2-stellig sein, muß die Abfrage erweitert werden, z.B. mit

if not %x:~-4, 1%==F (
set y= %x:~-4, 2% else
set y=%x:~-3, 1%
)

Danach wird überprüft ob das Verzeichnis Filiale_%y% existiert und wenn nicht erstellt.
Und zum Schluß wird das gesamte Verzeichnis kopiert.
Ist ungetestet, sollte aber so stimmen.

Mit freundlichen Grüßen maneich
Bitte warten ..
Mitglied: Biber
16.02.2006 um 23:11 Uhr
Moin, Zwiebelmax,
willkommen im Forum.

Zwei Fussnoten zur maneich's Lösung:

If not exist Laufw:\Verzeichnispfad\Filiale_1 md Laufw:\Verzeichnispfad\Filiale_%y%
>>xcopy /y %1 Laufw:\Verzeichnispfad\Filiale_%y%>nul
Tippfehler:
If not exist Laufw:\Verzeichnispfad\Filiale_%y% md Laufw:\Verzeichnispfad\Filiale_%y%

>>goto eof
Tippfehler:
goto :eof

...


>>if not %x:~-4, 1%==F (
>>set y= %x:~-4, 2% else
>>set y=%x:~-3, 1%
>>)

--->würde ich so formatieren (und hab ein überflüssiges Leerzeichen beim ersten "set y=..." entfernt):
if not [%x:~-4, 1%]==[F] set y=%x:~-4, 2%
) else (
set y=%x:~-3, 1%
)

Soll aber nur eine konstruktive Ergänzung sein.
Getestet hab ich es ebenso wenig wie maneich.

Grüße Biber
Bitte warten ..
Mitglied: maneich
17.02.2006 um 00:25 Uhr
Hallo,

nun ja, ungetestet schleichen sich immer wieder Leichtsinnsfehler ein.

Aber mit dem MD ist es ja nicht getan, er will ja auch die Ordner F?K? da rein kopieren.

Da hier immer mehrere Ordner wie o.a. reinkopiert werden, muß der Ordner Filiale_? ja nur beim ersten mal erstellt werden. Insofern ist xcopy ja richtig, über den Parameter läßt sich diskutieren.

Mit freundlichen Grüßen maneich
Bitte warten ..
Mitglied: Biber
19.02.2006 um 12:44 Uhr
Na gut,

dann will ich auch mal meinen Lösungsansatz posten.
Das Szenario, so wie ich es verstanden habe:

Irgendwo existiert ein Quellverzeichnis, in dem die bisherigen Unterzeichnisse F1K7, F4K77 etc sind. Bei mir z.B.:

C:\WINDOWS\TEMP>dir f*
Verzeichnis von C:\WINDOWS\TEMP

19.02.2006 12:11 DIR f3k99
19.02.2006 12:11 DIR f1k2
19.02.2006 12:11 DIR f13k25
19.02.2006 12:12 DIR f2k77

Dann würde ich für diesen Pillepalle keinen Batch schreiben, sondern eine Zeile vom CMD-Prompt abfeuern:
01.
C:\WINDOWS\TEMP> 
02.
@for /f %i in ('dir /b /a:d F*k*') do @For /f "delims=FfKk" %a in ("%i") do @echo xcopy %i\*.* z:\Filiale_%a\%i /s /e /i  
03.
xcopy f3k99\*.* z:\Filiale_3\f3k99 /s /e /i 
04.
xcopy f1k2\*.* z:\Filiale_1\f1k2 /s /e /i 
05.
xcopy f13k25\*.* z:\Filiale_13\f13k25 /s /e /i 
06.
xcopy f2k77\*.* z:\Filiale_2\f2k77 /s /e /i
[Das "@echo" vor dem xcopy sollte natürlich nach dem Test gelöscht werden.]
Wenn ich alle XCopy-Befehle, die in die Grütze gehen, in einer Log-Datei dokumentieren will, hänge ich noch ein..
....dran.
Sollte der Xcopy-Befehl nicht dazu in der Lage sein, das Verzeichnis "Filiale_N" und das Unterverzeichnis "F1K2" in einem Rutsch anzulegen (hab ich nicht getestet), dann eben diese Zeile vorweg:

01.
@for /f %i in ('dir /b /a:d F*k*') do @For /f "delims=FfKk" %a in ("%i") do MD  z:\Filiale_%a\%i
Wenn es partout ein Batch sein soll mit ein paar Doku-Zeilen:
01.
::----snipp CopyToNewFiliale.bat-------------- 
02.
@Echo off & setlocal 
03.
Set "Q=C:\Windows\Temp" && Rem Q wie Quellverzeichnis 
04.
Set "Z=\\Server\Freigabexy\AlleFilialen" && Rem Z wie Zielverzeichnis 
05.
Set "Log=%temp%\Filialcopy.log" && mein Logfile, nur für Fehler 
06.
Pushd "%Q%" 
07.
for /f %%i in ('dir /b /a:d F*k*') do ( 
08.
For /f "delims=FfKk" %%a in ("%%i") do ( 
09.
xcopy %Q%\%%i\*.* %Z%\Filiale_%%a\%%i /s /e /i||echo Fehler beim Kopieren von %%i nach %%a\%%i>>%log% 
10.
)) 
11.
Popd 
12.
:: --snapp -CopyToNewFiliale.bat--------( ungetestete Skizze)
My 2c
Biber
Bitte warten ..
Neuester Wissensbeitrag
DSL, VDSL

Telekom blockiert immer noch den Port 7547 in ihrem Netz

(3)

Erfahrungsbericht von joachim57 zum Thema DSL, VDSL ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

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

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