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

Vorhandene batch bearbeiten

Frage Entwicklung Batch & Shell

Mitglied: joman78

joman78 (Level 1) - Jetzt verbinden

29.06.2010, aktualisiert 17:29 Uhr, 2554 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 ..
Ähnliche Inhalte
Batch & Shell
Batch zum bearbeiten mehrerer CSV (3)

Frage von Matzus87 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch : alle Dateien eines Ordners bearbeiten (1)

Frage von deguonkel zum Thema Batch & Shell ...

Batch & Shell
gelöst Per Batch eine vorhandene TXT aktualisieren (4)

Frage von kampen zum Thema Batch & Shell ...

Batch & Shell
gelöst Vorhandene TXT per Batch aktualisieren (6)

Frage von kampen zum Thema Batch & Shell ...

Neue Wissensbeiträge
Humor (lol)

Taschenrechner in IOS kaputt!

(5)

Information von Lochkartenstanzer zum Thema Humor (lol) ...

Sicherheit

Kanadischer Geheimdienst veröffentlicht erstmals Sicherheitssoftware

(3)

Information von BassFishFox zum Thema Sicherheit ...

Virtualisierung

Docker Monitoring und Steuerung per "sen"

Tipp von Frank zum Thema Virtualisierung ...

Heiß diskutierte Inhalte
Windows 7
Abbruch bei Brennvorgang (19)

Frage von Simulant zum Thema Windows 7 ...

Router & Routing
Externe IP von innen erreichbar machen (16)

Frage von Windows10Gegner zum Thema Router & Routing ...

Firewall
WIndows 7 RDP Massen Angriff (14)

Frage von Motte990 zum Thema Firewall ...