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

Vorhandene batch bearbeiten

Frage Entwicklung Batch & Shell

Mitglied: joman78

joman78 (Level 1) - Jetzt verbinden

29.06.2010, aktualisiert 17:29 Uhr, 2528 Aufrufe, 5 Kommentare

hallo nochmal ich dau

hab eine batch aus dem internet gezogen die aus einer file einen ordner macht und die file in den ordner schiebt jetzt hab ich nur ein problem das mir im namen des ordners immer dateinamen drin steht mir reichen aber die ersten 3 stellen ich poste mal die batch vielleicht hat jemand ein tipp

01.
@echo off 
02.
 
03.
rem rekursiver Aufruf? (1.Parameter == /R) 
04.
if %1.==/R. goto rekursiv 
05.
 
06.
 
07.
rem ein Prameter vorhanden? 
08.
if %1.==. goto no_params 
09.
set src=%1 
10.
:param_ 
11.
 
12.
rem erster Prameter sollte der Ordner sein, wo's abgeht 
13.
if not exist %src%\* goto err_param 
14.
 
15.
 
16.
rem und nun für jede Datei innerhalb des Quellordners ... 
17.
rem dabei ist: 
18.
rem   '%%i'	die "For"-Variable 
19.
rem   '%0'	ist das script selbst 
20.
rem 1 '/R'	die Markierung für den rekursiven Aufruf 
21.
rem 2 '%src%'	der Quellordner 
22.
rem 3 '%%~fi'	Laufwerk+Pfad+Name+Erweiterung der Datei 
23.
rem 4 '%%~dpsi'	Laufwerk+Pfad+Name+Erweiterung als '8.3' 
24.
for %%i in (%src%\*.*) do call %0 /R "%src%" "%%~fi" %%~si 
25.
goto end_batch 
26.
 
27.
 
28.
rem -------------------------------------------------- 
29.
 
30.
:rekursiv 
31.
rem bin ich's selbst??? Ooops! 
32.
if %3.==%0. goto exit_batch 
33.
 
34.
rem check %3 (Datei) 
35.
if not exist %3 goto err_R_Datei 
36.
 
37.
rem "falschen" Ordner erstellen ... 
38.
if exist %4__\* goto err_R_Dummy 
39.
md %4__ 
40.
rem ... Datei verschieben ... 
41.
move %3 %4__ >Nul 
42.
rem ... und "falschen" Ordner korrigieren... 
43.
move %4__ %3 
44.
 
45.
goto exit_batch 
46.
 
47.
 
48.
rem -------------------------------------------------- 
49.
 
50.
:no_params 
51.
echo. 
52.
echo. kein Ordner angegeben... 
53.
echo. verwende aktuellen Ordner 
54.
set src=. 
55.
rem ... und Rücksprung 
56.
goto param_ 
57.
rem echo. [Abbruch] 
58.
rem echo. 
59.
rem goto end_batch 
60.
 
61.
 
62.
:err_param 
63.
echo. 
64.
echo. Ordner "%1" scheint nicht zu existieren, kein Zugriff oder nix drin! 
65.
echo. [Abbruch] 
66.
echo. 
67.
goto end_batch 
68.
 
69.
:err_R_Datei 
70.
echo. Kein Zugriff auf oder Datei "%3" existiert nicht! 
71.
echo. [skip...] 
72.
goto exit_batch 
73.
 
74.
:err_R_Dummy 
75.
echo. Dummer Zufall... 
76.
echo. Dummy-Ordner "%4__" existiert bereits! 
77.
echo. [skip...] 
78.
goto exit_batch 
79.
 
80.
 
81.
rem -------------------------------------------------- 
82.
 
83.
:end_batch 
84.
rem falls noch irgendetwas zu sagen ist... 
85.
pause 
86.
 
87.
:exit_batch
[Edit Biber] geCodeformatiert. [/Edit]
Mitglied: bastla
29.06.2010 um 18:57 Uhr
Hallo joman78!

Soferne es mehrere Dateinamen mit den selben 3 Anfangsbuchstaben gibt: Sollen dann alle Dateien im selben Ordner landen?
Außerdem: Ist nur eine Ordnerebene zu berücksichtigen?

Bei zweimal "Ja" als Antwort sollte das so gehen:
01.
@echo off & setlocal 
02.
set "Ordner=D:\Dein Ordner" 
03.
 
04.
pushd "%Ordner%" 
05.
for /f "delims=" %%i in ('dir /b /a-d') do set "Name=%%~ni" & call :ProcessFile "%%i" 
06.
popd 
07.
goto :eof 
08.
 
09.
:ProcessFile 
10.
set "Abk=%Name:~,3%" 
11.
echo md "%Abk%" 2>nul 
12.
echo move %1 "%Abk%" 
13.
goto :eof
Die beiden "echo" dienen dazu, den Ablauf zunächst nur zu simulieren - wenn Du sie entfernst, werden tatsächlich Ordner erstellt und die Dateien verschoben ...

Grüße
bastla
Bitte warten ..
Mitglied: joman78
29.06.2010 um 19:17 Uhr
also dier dateiname z.b lautet b67.123 dann ist der ordnername b67.123 und ich hätte gerne
als ordnername nur b67
Bitte warten ..
Mitglied: bastla
29.06.2010 um 19:22 Uhr
Hallo jomain78!
also dier dateiname z.b lautet b67.123 dann ist der ordnername b67.123 und ich hätte gerne
als ordnername nur b67
Das glaube ich schon verstanden (und im Batch oben berücksichtigt) zu haben - aber wenn es auch eine Datei "b67_2.123" gäbe: was sollte mit der passieren?

Grüße
bastla

P.S.: Falls alle Dateien nur mit jeweils 3 Zeichen vor und nach dem Punkt benannt sein sollten, ließe sich das Ganze noch etwas kürzer schreiben:
for /f %%i in ('dir /b /a-d') do (echo md %%~ni 2>nul & echo move %%i %%~ni)
als Zeile 5; der Rest ab Zeile 7 könnte entfallen ...
Bitte warten ..
Mitglied: joman78
29.06.2010 um 19:26 Uhr
der name lautet immer von der file b67.xxx nur die ersten drei ändern sich die hinteren bleiben immer gleich
Bitte warten ..
Mitglied: joman78
29.06.2010 um 19:42 Uhr
bastla,

du bist mein held wenn du mal in stuttgart bist ruf an das bier geht auf mich

danke danke
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

LAN, WAN, Wireless
Freifunk über vorhandene Access Points ausstrahlen (4)

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

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (11)

Frage von clragon zum Thema Batch & Shell ...

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

Frage von patz223 zum Thema Windows Userverwaltung ...

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 ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...