Top-Themen

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
Kommentar vom Moderator Biber am 17.08.2010 um 16:53:23 Uhr
Zitat von Daffman: am 17.08.2010, 13:00:31 Uhr
das mit dem umbenennten funktioniert in die eine richtung, aber ...
Set /a rgc+=1
#698
GELÖST

Batch datei spuckt nach for f in der for l schleife nicht die varbiablen aus!

Frage Entwicklung Batch & Shell

Mitglied: Daffman

Daffman (Level 1) - Jetzt verbinden

16.08.2010, aktualisiert 17.08.2010, 6724 Aufrufe, 9 Kommentare

Ich wende mich wieder an die community, weil ich weiß, dass ich hier sicher eine antowort bekommen! Diesmal habe ich schon einen Quelltext nur irgendwas funktioniert nicht wie immer...

Hallo! Also ich versuche alle dateien in einem verzeichnis umzubenennen und zwar indem ich die " " (leerschritte) in den dateinamen durch "_" ersetze.

ich dachte mir, zuerst einmal die liste in eine datei schreiben, die namen als variable festlegen und den leerschirtt durch einen unterstrich ersetzen und in eine zweite datei schreiben. das funktioniert noch super. wenn ich die datei anschaue ist alles super.
so dann will ich mit einer for /f die zweite liste wieder in variable speichern. geht auch noch. doch der letzte schritt ist irgendwo fehlerhaft.

01.
dir /b *.txt>>list.tmp 
02.
for /f "delims=: tokens=1,2*" %%a in ('findstr /n . "list.tmp"') do (set znt=%%a 
03.
set list%%a=%%b 
04.
setlocal enabledelayedexpansion 
05.
echo !list2%%a: =^_!>>list2.tmp 
06.
endlocal 
07.
08.
 
09.
for /f "delims=: tokens=1,2*" %%a in ('findstr /n . "list.tmp"') do (set list2%%a=%%b) 
10.
 
11.
for /l %%a in (1, 1, %znt%) do (ren %%list%%a%% %%list2%%a%%)
hier ist, was ausgespuckt wird:

01.
C:\Users\grandits\Desktop\Batch>2 
02.
 
03.
C:\Users\grandits\Desktop\Batch>dir /b *.txt 1>>list.tmp 
04.
 
05.
C:\Users\grandits\Desktop\Batch>for /F "delims=: tokens=1,2*" %a in ('findstr /n 
06.
 . "list.tmp"') do ( 
07.
set znt=%a 
08.
 set list%a=%b 
09.
 setlocal enabledelayedexpansion 
10.
 echo !list2%a: =_! 1>>list2.tmp 
11.
 endlocal 
12.
13.
 
14.
C:\Users\grandits\Desktop\Batch>( 
15.
set znt=1 
16.
 set list1=Merle Haggard.txt 
17.
 setlocal enabledelayedexpansion 
18.
 echo !list21: =_! 1>>list2.tmp 
19.
 endlocal 
20.
21.
 
22.
C:\Users\grandits\Desktop\Batch>for /F "delims=: tokens=1,2*" %a in ('findstr /n 
23.
 . "list2.tmp"') do (set list2%a=%b ) 
24.
 
25.
C:\Users\grandits\Desktop\Batch>(set list21=Merle_Haggard.txt) 
26.
 
27.
C:\Users\grandits\Desktop\Batch>for /L %a in (1 1 1) do (ren %list%a% %list2%a% 
28.
29.
 
30.
C:\Users\grandits\Desktop\Batch>(ren %list1% %list21% ) 
31.
Das System kann die angegebene Datei nicht finden.
wie kann ich das problem beheben??

MFG alexander
Mitglied: bastla
16.08.2010 um 09:21 Uhr
Hallo Daffman!

Sollte einfacher gehen:
01.
@echo off & setlocal 
02.
pushd "D:\Verzeichnis mit den umzubenennenden Dateien" 
03.
for /f "delims=" %%i in ('dir /b /a-d "* *.*" 2^>nul') do set "Datei=%%i" & call :ProcessFile "%%i" 
04.
popd 
05.
goto :eof 
06.
 
07.
:ProcessFile 
08.
echo ren %1 "%Datei: =_%" 
09.
goto :eof
Wenn's passt, das "echo" vor dem "ren" entfernen.

Falls es tatsächlich keine "!" in den Dateinamen gibt, sollte auch
01.
@echo off & setlocal enabledelayedexpansion 
02.
pushd "D:\Verzeichnis mit den umzubenennenden Dateien" 
03.
for /f "delims=" %%i in ('dir /b /a-d "* *.*" 2^>nul') do set "Datei=%%i" & echo ren "%%i" "!Datei: =_!" 
04.
popd
genügen (beides ungetestet) ...

Und wenn Du eine Liste der umbenannten Dateien brauchst, dann eben an passender Stelle ein
>>D:\Umbenannt.txt echo %%i
einbauen.

Grüße
bastla
Bitte warten ..
Mitglied: Daffman
16.08.2010 um 10:29 Uhr
Hallo!

Ich danke Dir für Deine schnelle antwort, ich habe das erste verwendet, weil es sicherer ist und ich nicht garantrieren kann, dass keine "!" vorhanden sind.

SUPER danke!

MFG alexander
Bitte warten ..
Mitglied: Daffman
16.08.2010 um 12:46 Uhr
eine frage habe ich noch, wenn ich das in die andere richtrung mchen will, was empfiehlst Du da??

ich habe es mit:

01.
setlocal 
02.
set weg=%CD% 
03.
set weg=%weg:~0,-12% 
04.
pushd %weg% 
05.
for /f "delims=" %%i in ('dir /b /a-d "* *.*" 2^>nul') do set "Datei=%%i" & call :ProcessFile2 "%%i" 
06.
popd 
07.
goto :FERTIG 
08.
 
09.
:ProcessFile2 
10.
ren %1 "%Datei:_= %" 
11.
goto :eof 
12.
:FERTIG
oder muss ich es mit ^_ machen??

nochmals mit SFG Alexander
Bitte warten ..
Mitglied: bastla
16.08.2010 um 17:47 Uhr
Hallo Daffman!

Das "ren" müsste schon passen; die Zeilen 2 und 3 sind mir etwas suspekt - was sollen die denn bewirken (was nicht ev auch ein "pushd .." könnte)?

Grüße
bastla
Bitte warten ..
Mitglied: Daffman
17.08.2010 um 11:20 Uhr
Hallo bastla!

naja ich dachte mir, dass ich das Verzeichnis nicht auschreiben muss, in dem alle umbenannt wird, verwende ich einfach eine Variable! Damit ist es auch leichter, wenn ich es auf einem anderen Computer ausführen will!

wenn ich jetzt dieses Script ausführe, kommt dann für die 2, 3, 4. zeile das:

01.
C:\Users\Desktop\Batch\musikfinden>set weg=C:\Users\Desktop\Batch\musikfinden 
02.
 
03.
C:\Users\Desktop\Batch\musikfinden>set weg=C:\Users\Desktop\Batch 
04.
 
05.
C:\Users\Desktop\Batch\musikfinden>pushd "C:\Users\Desktop\Batch"
MFG alexander

PS: noch eine frage habe ich: wenn ich jetzt mehrere Zeichen ersetzen wollen würde, muss ich das dann einfach dranhängen? so:

01.
ren %1 "%Datei: =_%"&ren %1 "%datei:'ve= have%&ren %1 %Datei:ü=³%
nochmals MFG alexander
Bitte warten ..
Mitglied: bastla
17.08.2010 um 12:20 Uhr
Hallo Daffman!

Variablen sind zumeist sinnvoll - Deine Zeile 3 macht den Vorteil aber wieder zunichte, da Du eine Konstante (12) verwendest; deshalb die Frage, "wohin" Du damit willst.

Da in diesem Fall die Variable nur ein einziges Mal (für den Verzeichniswechsel mit "pushd") verwendet wird, könntest Du allerdings den Pfad auch einfach in Zeile 4 angeben. Für den Spezialfall, dass Du das "Eltern-Verzeichnis" ansteuern willst, genügt dann tatsächlich ein "pushd .." ...
Wenn Du mehrere Ersetzungen benötigst könnte das so aussehen:
01.
set "Datei=%Datei: =_%" 
02.
set "Datei=%Datei:'ve= have%" 
03.
set "Datei=%Datei:ü=³%" 
04.
ren %1 "%Datei%"
Grüße
bastla
Bitte warten ..
Mitglied: Daffman
17.08.2010 um 13:00 Uhr
Zitat von bastla:
Da in diesem Fall die Variable nur ein einziges Mal (für den Verzeichniswechsel mit "pushd") verwendet wird,
könntest Du allerdings den Pfad auch einfach in Zeile 4 angeben. Für den Spezialfall, dass Du das
"Eltern-Verzeichnis" ansteuern willst, genügt dann tatsächlich ein "pushd .." ...

jaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - vielen dank das brauche ich!

das mit dem umbenennten funktioniert in die eine richtung, aber in die andere nicht mehr
die dateien mit "_" im Elternverzeichnis sollen wieder auf ein " " gebracht werden:

01.
@echo off & setlocal 
02.
pushd.. 
03.
for /f "delims=" %%i in ('dir /b /a-d "* *.*" 2^>nul') do set "Datei=%%i" & call :ProcessFile "%%i" 
04.
popd 
05.
goto :eof 
06.
 
07.
:ProcessFile 
08.
set datei=%datei:_= %" 
09.
echo ren %1 "%Datei%" 
10.
goto :eof
was ist daran falsch???

LG alexander
Bitte warten ..
Mitglied: bastla
17.08.2010 um 13:09 Uhr
Hallo Daffman!

Abgesehen vom fehlenden Anführungszeichen in der Zeile 8 sorgt das "optimierte" (hatte ich oben nicht erwähnt)
dir "* *.*"
dafür, dass nur Dateien mit Leerzeichen im Namen gesucht werden - solche gibt's aber nicht mehr ...

... daher sollte es mit dieser Zeile 3 dann klappen:
for /f "delims=" %%i in ('dir /b /a-d 2^>nul') do set "Datei=%%i" & call :ProcessFile "%%i"
Grüße
bastla
Bitte warten ..
Mitglied: Daffman
17.08.2010 um 13:38 Uhr
SUPER danke, das war genau das richtige!

MFG alexander

PS: ich danke dir soooo sehr für deine vielen Hilfen!!! und ich hoffe ich darff mich nocheinmal melden, wenn ich frageb hätte?
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Leerzeichen aus Zeichenfolge entfernen mit Batch FOR f Schleife
gelöst Frage von gexnerBatch & Shell2 Kommentare

Hallo! Ich möchte aus einer Zeichenfolge alle Leerstellen, egal ob vorne hinten oder in der Mitte, entfernen. In Anlehnung ...

Batch & Shell
Batch Schleife als FOR-SCHLEIFE
gelöst Frage von mp2711Batch & Shell2 Kommentare

Mit den FOR-Schleifen habe ich mich leider bislang zu selten auseinander gesetzt, aber da ich sonst gerade nicht weiter ...

Windows 7
Batch Datei erzeugt bei jedem Befehl Schleife
gelöst Frage von FrashdWindows 72 Kommentare

Moin, wir haben Windows 7 prof. in einer Domäne. Ich habe eine Batch Datei geschrieben, die die Netzlaufwerke verbindet ...

Batch & Shell
For f Skip Schleife soll txt files kopieren
gelöst Frage von BiffBaffBatch & Shell2 Kommentare

Hallo zusammen, ich habe schon in anderen Foren gelesen, dass die FOR /F Variante keine Wildcards enthaelt. Ich wuerde ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 2 StundenVerschlüsselung & Zertifikate

Interessant SSH-Kommando in CMD.exe und PowerShell

Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement17 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...