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
Kommentar vom Moderator Biber am 05.05.2011 um 19:37:52 Uhr
>Ich will von einem Ordner alle dateien die mit einem kleinbuchstaben anfangen umbennen
set /a rgc+=1
#750
Ausgerechnet so ein hingeschlurter Beitrag bekommt den Jubiläums-RGC.
GELÖST

Stringbegrenzung in nem For-Befehl

Frage Entwicklung Batch & Shell

Mitglied: fame.styler

fame.styler (Level 1) - Jetzt verbinden

05.05.2011, aktualisiert 06.05.2011, 2588 Aufrufe, 9 Kommentare

Hi Leute, ich will von einem Ordner alle Dateien, die mit einem Kleinbuchstaben anfangen, umbennen, sodass Alle mit einem Großbuchstaben beginnen. Eigentlich müsste dass mit einer Batch realisierbar sein... hoffe ihr könnt mir helfen =)

01.
  
02.
set VarA=a 
03.
set VarB=b 
04.
::und so weiter 
05.
 
06.
for /f "tokens=1 delims=" %%i IN ('dir /b /s /A-d *.MP3') DO ( 
07.
if %%i:~0,1% == VarA ren %%i A%%i:~1,% 
08.
if %%i:~0,1% == VarB ren %%i B%%i:~1,% 
09.
::und so weiter 
10.
11.
 
Das ist jetzt aber nur eine schnell entworfene Rohform... eine fixe Idee, mehr nicht ;)

Es soll, wenn der erste Buchstabe klein ist, die Datei mit einem Großbuchstaben statt einem Kleinbuchstagen am Anfang umbenennen... aber das if %%i:~0,1% geht nicht, geht sowas überhaupt in einem for befehl ?


hoffe ihr könnt mir helfen

PS.: Hintergrund ist folgender: Ich hab heute eine Große Menge Daten zu verwalten (musik ;D) und hab aber manche von den Liedern doppelt. Da ich mir nicht sicherbin, ob Windows bei Groß- und Kleinbuchstaben Unterschiede kennt (denke mal ja) und ich gern Batchskripte entwerfe, will ich dafür also ein Skript machen, aber es funktioniert halt nich so wie es soll ;)

Danke schon mal
Mitglied: bastla
05.05.2011 um 19:44 Uhr
Hallo fame.styler (auch wenn Du auf eine Begrüßung keinen besonderen Wert zu legen scheinst)!

Falls Du das nicht unbedingt mit native Batch erledigen willst:
01.
@echo off & setlocal 
02.
 
03.
set "M=%temp%\MakeProperCase.vbs" 
04.
>%M% echo T=WScript.Arguments(0):WScript.Echo UCase(Left(T,1))^&Mid(T,2) 
05.
 
06.
for /f "tokens=1 delims=" %%i IN ('dir /b /s /A-d *.MP3') DO ( 
07.
    for /f %%a in ('cscript /nologo %M% "%%~nxi"') do echo ren "%%i" "%%a" 
08.
)
Zum Testen werden (wegen des "echo") die Umbenenn-Befehle nur angezeigt.

BTW: Im Zweifelsfall würde ich "tokens=1" ersatzlos streichen ...
Doch noch ein Batch-Hinweis: Es können von Schleifenvariablen keine Teilstrings gebildet werden - daher wäre eine Zuweisung an eine Variable wie zB %Name% und entweder "delayedExpansion" oder ein Unterprogramm erforderlich ...

... und auch dann müsste vermutlich eine Umbenennung auf einen temporären Namen und von diesem auf den gewünschten neuen Namen erfolgen. [Edit] inzwischen getestest [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: fame.styler
05.05.2011 um 20:44 Uhr
kannst du mir dazu ein skript posten?? =)

oder funktioniert ees so auch
01.
FOR %%i IN ('dir /b /s /A-d *.mp3') DO ( 
02.
 
03.
SET name=%%i 
04.
if %name:~0,1% == a ren %name% A%name:~1,% 
05.
 
06.
)
Bitte warten ..
Mitglied: Skyemugen
05.05.2011 um 20:52 Uhr
Aloha,

du könntest es (getestet) z.B. so durchführen

01.
@echo off & setlocal 
02.
for /f "delims=" %%i IN ('dir /b /s /a-d *.mp3') do call :Ablauf "%%i" 
03.
pause 
04.
goto :eof 
05.
 
06.
:Ablauf 
07.
set "Datei=%~n1" 
08.
set "Anfang=%Datei:~0,1%" 
09.
set "Anfang=%Anfang:a=A%" 
10.
REM bitte selber fortfuehren 
11.
set "Anfang=%Anfang:h=H%" 
12.
REM bitte selber fortfuehren 
13.
ren %1 "%Anfang%%Datei:~1%%~x1" 
14.
goto :eof
greetz André

P.S.: Die Direktumbenennung (ohne temporär) funktioniert unter Windows 7 einwandfrei, bin mir aber bei Windows XP nicht sicher (und kann es jetzt auch nicht testen) ...
@Biber: aha, gut, dann muss ich nicht bis morgen warten, zum Testen xD

edit: oh, ich war wohl wieder zu kompliziert am Werk xD ich mag kein delayedexpansion ^_^
@bastla, hm, dachte der nimmt dann den Pfad nicht mit ... frag' mich nicht warum, ist schon spät und Monty Python läuft, da habe ich nur den Dateinamen im Kopf gehabt ... wobei ich mir im Skript dann mit %~n1 selbst im Gedanken widerspreche - stimmt ist ja /s mit dabei
Bitte warten ..
Mitglied: bastla
05.05.2011 um 20:59 Uhr
Hallo fame.styler!
kannst du mir dazu ein skript posten?? =)
Was meinst Du damit - da oben steht eines ...
Da ich mir nicht sicherbin, ob Windows bei Groß- und Kleinbuchstaben Unterschiede kennt (denke mal ja)
Was Dateinamen angeht, ist Groß-/Kleinschreibung in Windows egal ...

Grüße
bastla

P.S.: Leerzeichen vor und nach "==" sind keine gute Idee ...

... und mit
SET name=%%i
bekommst Du bei Deiner Schleife den gesamten Pfad in die Variable ...
Bitte warten ..
Mitglied: Biber
05.05.2011 um 21:01 Uhr
Moin Skyemugen,

brauchst jetzt kein XP nachinstallieren -es geht auch da:

Vorher:
>dir /b /s /A-d f:\i*.jpg 
f:\Transfer\IMG_0095.JPG 
f:\Jokes\holger\neuebilder\ich-zuerst.jpg 
f:\Jokes\holger\neuebilder\irrtum.jpg irrtum
Nachher:
>for /f "delims=" %i IN ('dir /b /s /A-d f:\i*.jpg') DO @(set "xx=%~nxi" & @if "!xx:~0,1!"=="i" ren "%i" "I!xx:~1!") 
 
(=20:55:45  D:\temp=) 
>dir /b /s /A-d f:\i*.jpg 
f:\Transfer\IMG_0095.JPG 
f:\Jokes\holger\neuebilder\Ich-zuerst.jpg 
f:\Jokes\holger\neuebilder\Irrtum.jpg
@foen-styler

ja, so wie du es angedacht hast ginge es auch - allerdings nur mit DelayedExpansion und der Schreibweise !var! statt %var%.
So wie in meiner CMD-Zeile.
---> ... if "!xx:~0,1!"=="i" ren "%i" "I!xx:~1!")

Grüße
Biber
[Edit] Falsches "Vorher"-Beispiel berichtigt. [/Edit]
[Edit2] @bastla wg. "so ginge es auch.."
-> gemeint war nur der Plan "wenn erstes Zeichen 'a' ist dann mach "A" und den Rest-Originalnamen ab Pos.2" usw von [a-z]
[/Edit2]
Bitte warten ..
Mitglied: bastla
05.05.2011 um 21:08 Uhr
@Skyemugen
"%~dpnx1" ist Overkill (%1 täte es auch - nach einem "dir /b /s" hast Du immer einen kompletten Pfad) ...
@Biber
ja, so wie du es angedacht hast ginge es auch
Nicht wirklich - in "%name%" wäre der volle Pfad enthalten ...

Grüße
bastla
Bitte warten ..
Mitglied: fame.styler
05.05.2011 um 21:37 Uhr
Hi bastla,


kannst du mir dazu ein skript posten?? =)


damit meine ich das was biber inzwischen schon beantwortet hat ;)


[Edit2] @bastla wg. "so ginge es auch.."
-> gemeint war nur der Plan "wenn erstes Zeichen 'a' ist dann mach "A" und den Rest-Originalnamen ab Pos.2" usw von [a-z]
[/Edit2]

Ansonst mal wieder Danke an alle die so hilfreich mitgeholfen haben... es hat natürlich funktioniert ;) was sonst xD

fame.styler

PS.: @Biber: wegen deinem Kommentar über den schludrigen Beitrag ;) ich habs nochmal ein wenig überarbeitet.. war vorher bissl im Stress und a weng schlecht drauf und hab "nur schnell" gepostet ;) aber ich hoffe dass die Form jetzt ansprechender ist =)
Nix für ungut ;)

PPS.: kann man nachträglich Zitate einbauen? <- hat sich ja inzwischen erledigt.. ;)
Bitte warten ..
Mitglied: bastla
05.05.2011 um 22:15 Uhr
Hallo fame.styler!

Nur interessehalber: Was spricht aus Deiner Sicht gegen (für String- oder zB auch Datumsverarbeitung besser als Batch geeignetes) VBS (wenn es dazu noch in einen Batch integriert ist)?

Grüße
bastla

P.S.: Zum Thema "Zitat" (bzw entsprechender Formatierung): http://www.administrator.de/helpsystem/detail.php?idx=20#toc20
Bitte warten ..
Mitglied: fame.styler
05.05.2011 um 22:34 Uhr
naja. erstens kenn ich mich mit VBS nich so gut aus wie mit Batch und ich mach immer lieber alles einheitlich. also entweder Batch, oder VBS... is zwar im Grunde ne blöde Einstellung aba naja und solangs mit Batch auch geht ;)
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...