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

Einträge einer Bat Datei per eingabeaufforderungs bat ändern Rat beim Feinschliff benötigt

Frage Entwicklung Batch & Shell

Mitglied: MrSonei6

MrSonei6 (Level 1) - Jetzt verbinden

17.07.2009, aktualisiert 17:41 Uhr, 6514 Aufrufe, 19 Kommentare

Hallo an alle die sich mit batch auskennen, könnte mir vielleicht einer helfen, ich habe eine bat Datei in der ich, in der dritten Zeile von tastenanschlag 79bis ca 120,
einen Eintrag ändern möchte. Dies möchte ich anhand einer Konfig.bat bewerkstelligen.

In der Konfig.bat konfiguriere ich nicht nur diese eine bat wie oben beschrieben sondern auch noch eine FTP Textdatei. Dies funktioniert schon wunderbar. Die txt hab ich ganz unten aufgelistet.

Ich möcht in dieser Konfig.bat nicht nur die FTP Text datei konfigurieren, sondern auch gleich noch eine bat mit den Namen "1.bat"
Die Schwierigkeit liegt darin das ich bei der 1.bat mitten in der 3ten zeile was ändern will.
Und, dass die Geschichte mit "echo text>>1.bat" bei -->bat Dateinen nicht funktioniert und anscheinend nur bei txt Dateien geht (kleiner Test meinerseits)
Nächstes Problem ist das die länge der Zeichen die einzufügen sind variert, sprich es können einmal 36 Zeichen sein und einmal 50 z.B.


Die 1.bat in der die Änderung erfolgen soll, sieht aktuell so aus:


01.
@echo off & setlocal enableDelayedExpansion 
02.
cd "C:\getit_PDF\" 
03.
for /f "tokens=*" %%i in ('dir /b "C:\getit_PDF\*.pdf"') do ren "%%~i" "  -->11...11_c001_u000**<--  #%%~nxi" 
04.
cd "C:\Programme\FreePDF_XP\Skript\Profil1" 
05.
FTP -s:1.txt 
06.
cd "C:\getit_PDF\" 
07.
del "*.pdf"

und soll danach mittels manueller Eingabe während der CMD abfrage von der Konfig.bat so aussehen:


01.
@echo off & setlocal enableDelayedExpansion 
02.
cd "C:\getit_PDF\" 
03.
for /f "tokens=*" %%i in ('dir /b "C:\getit_PDF\*.pdf"') do ren "%%~i" "  -->85...44_c001_u0125<--  #%%~nxi" 
04.
cd "C:\Programme\FreePDF_XP\Skript\Profil1" 
05.
FTP -s:1.txt 
06.
cd "C:\getit_PDF\" 
07.
del "*.pdf"

Sprich ich müsste in meiner unten angegeben Konfigurations.bat noch die Userabfrage für diese ca 50 zeichen stellen:

Bitte geben sie Ihre Zahlen ein_
--> Mögliche Eingabe ins CMD Fenster wäre dann zb --> 85....44_c001_u0125



Hier meine Konfigurations.bat in der schon die FTP textdatei per usereingabe erstellt wird. Am ende dieser datei soll die abfrage der ca 50 steligen Zahl kommen.


01.
@ECHO OFF 
02.
set /p IP=Aktuelle IP eingeben_ 
03.
echo open %IP% 21>>1.txt 
04.
Set /p User=Bitte FTP Usernamen eingeben_ 
05.
echo %User%>>1.txt  
06.
Set /p PW=Bitte FTP Passwort eingeben_ 
07.
echo %PW%>>1.txt  
08.
Set /p FTP_Pfad="Bitte den Zielpfad auf dem FTP Server angeben_ 
09.
echo cd %FTP_Pfad%>>1.txt 
10.
echo bin>>1.txt 
11.
echo lcd C:\getondemand_PDF>>1.txt 
12.
echo put "*.pdf">>1.txt 
13.
echo disconnect>>1.txt 
14.
echo quit>>1.txt





Kann mir da einer weiterhelfen?
Lg Stefan
Mitglied: bastla
17.07.2009 um 17:43 Uhr
Hallo MrSonei6!

Für die paar Zeilen würde ich gar kein "Suchen/Ersetzen"- oder "Aus Einzelteilen kombinieren"-Script verwenden, sondern einfach die gesamte Batchdatei erzeugen:
01.
@echo off & setlocal 
02.
set "Bat=1.bat" 
03.
set Eingabe= 
04.
set /p Eingabe=Bitte geben sie Ihre Zahlen ein_ 
05.
 
06.
if not defined Eingabe echo Keine Zahlen eingegeben - %Bat% wird nicht erzeugt/geaendert! & goto :eof 
07.
 
08.
>"%Bat%"  echo @echo off ^& setlocal enableDelayedExpansion 
09.
>>"%Bat%" echo cd "C:\getondemand_PDF\" 
10.
>>"%Bat%" echo for /f "tokens=*" %%i in ('dir /b "C:\getit_PDF\*.pdf"') do ren "%%~i" "%Eingabe%#%%~nxi" 
11.
>>"%Bat%" echo cd "C:\Programme\FreePDF_XP\Skript\Profil1" 
12.
>>"%Bat%" echo FTP -s:1.txt 
13.
>>"%Bat%" echo cd "C:\getit_PDF\" 
14.
>>"%Bat%" echo del "*.pdf"
Grüße
bastla

P.S.: Wozu eigentlich die "DelayedExpansion"? Und wenn schon "cd" (und nicht "pushd"/"popd"), dann zur Sicherheit "cd /d" ...
Bitte warten ..
Mitglied: MrSonei6
17.07.2009 um 18:05 Uhr
danke!

Ich könnte doch dein skript unter meine Konfig.bat noch dran hängen oder?

Eine frage noch die 1.bat die mit deinen script erzeugt wird gibt mir das aus in der dritten Zeile

01.
for /f "tokens=*" %i in ('dir /b "C:\getit_PDF\*.pdf"') do ren "%~i" "454544445634#%~nxi" 
es soll aber das ausgeben

01.
for /f "tokens=*" %%i in ('dir /b "C:\getit_PDF\*.pdf"') do ren "%%~i" "454544445634#%%~nxi"
Sprich es fehlt an zwei stellen ein zweites % und so funktioniert die 1.bat nciht mehr

ich bin kein batchler ;) hab mir die DelayedExpansion von biber abgeschaut und wie ich mit pushd oder popd umgehen muss weiß ich auch noch nicht. Was bringd ein cd/d?
Bitte warten ..
Mitglied: Biber
17.07.2009 um 18:46 Uhr
Moin MrSonei6,

Kollege bastla hat eigentlich noch Urlaub.. deshalb spring ich mal ein.

Du musst ein diesem Fall beim Schreiben der Textdatei (bzw. Batchdatei) die doppelten Prozentzeichen vor den Laufvariablen verdoppeln.
Also statt z.B. %%i jetzt schreiben %%%%i.
Weil.. wegen... außer bastla und mir macht keiner sowas... von daher ist es etwas schwer in der M$-Hilfe zu finden.

01.
@echo off & setlocal 
02.
set "Bat=1.bat" 
03.
set Eingabe= 
04.
set /p "Eingabe=Bitte geben sie Ihre Zahlen ein: " 
05.
 
06.
if not defined Eingabe echo Keine Zahlen eingegeben - %Bat% wird nicht erzeugt/geaendert! & goto :eof 
07.
 
08.
>"%Bat%"  echo @echo off ^& setlocal enableDelayedExpansion 
09.
>>"%Bat%" echo cd "C:\getondemand_PDF\" 
10.
>>"%Bat%" echo for /f "tokens=*" %%%%i in ('dir /b "C:\getondemand_PDF\*.pdf"') do ren "%%%%~i" "%Eingabe%#%%%%~nxi" 
11.
>>"%Bat%" echo cd "C:\Programme\FreePDF_XP\Skript\Profil1" 
12.
>>"%Bat%" echo FTP -s:1.txt 
13.
>>"%Bat%" echo cd "C:\getondemand_PDF\" 
14.
>>"%Bat%" echo del "*.pdf"
zu Deiner zweiten Frage eine Doppel-Antwort:
Was bringd ein cd/d?
a) ein rote Unterstreichung, falls Du eine Rechtschreibprüfung verwendest
b) RTFM! [ein einfaches "cd /?" am CMD-Prompt].

Grüße
Biber
Bitte warten ..
Mitglied: MrSonei6
17.07.2009 um 19:22 Uhr
Vielen Dank ich les das MFM schon seit 2 Tagen, hatte vorher mit so was nie zu tun ;(
Ich werd mich bessern ich versprechs ;)

Ich hätt noch zwei Fragen an euch wenn ihr noch n wenig zeit habt?

Unten steht jetzt meine konfig.bat komplet fertig zum mitlesen ;)

Frage 1) Es wird immer kniffliger finde ich.

Ich hab vergessen, dass ich ja in der dritten Zeile von der 1.bat, als erstes eine ca. 36 stellige Zahl einfügen muss und dann kommt in der mitte ein fester Wert "_c001_u" und dann eine 3 stellige User ID die auch per user Eingabe reinkopiert werden soll. Ich hab das Skript von bastla bzw biber überarbeitet so das die konfig.bat auch noch einen zweiten Wert (die drei Stellige UserID) abfragt
Und dann hab ich aus den beiden Unbekannten Werten einen neuen Wert erzeugt der in der mitte einen Festen wert hat (wert3)

Wert3=wert_c001_wert2

und diesen Wert 3 wollte ich dann in Zeile 3 einfügen
Als ergebniss bekomm ich aber nur " _c001_ " also ohne die beiden werte

Frage 2)
was muss ich wo ändern damit die konfig.bat nicht im Zielordner, der zu erstellenden Dateien 1.txt und 1.bat, liegen zu braucht.
Z.B das die konfig.bat von überall ausgeführt werden kann und die beiden dateien immer in
C:\Programme\FreePDF_XP\FTP\Profile
landen


01.
@ECHO OFF 
02.
del 1.bat 
03.
del 1.txt 
04.
set /p IP=Aktuelle IP eingeben_ 
05.
echo open %IP% 21>>1.txt 
06.
Set /p User=Bitte FTP Usernamen eingeben_ 
07.
echo %User%>>1.txt  
08.
Set /p PW=Bitte FTP Passwort eingeben_ 
09.
echo %PW%>>1.txt  
10.
Set /p FTP_Pfad="Bitte den Zielpfad auf dem FTP Server angeben.  
11.
echo cd %FTP_Pfad%>>1.txt 
12.
echo bin>>1.txt 
13.
echo lcd C:\getondemand_PDF>>1.txt 
14.
echo put "*.pdf">>1.txt 
15.
echo disconnect>>1.txt 
16.
echo quit>>1.txt 
17.
 
18.
 
19.
echo echo off & setlocal enableDelayedExpansion >> 1.bat 
20.
set "Bat=1.bat"  
21.
set Eingabe=  
22.
set Eingabe2=  
23.
set Eingabe3=%Eingabe%+_c001_+%Eingabe2% 
24.
set /p Eingabe=Bitte kopieren Sie hier die gewuenschte uuID fuer diese Profiel ein_  
25.
set /p Eingabe2=Bitte geben sie zum Schluss noch ihre drei Stellige User ID ein_ 
26.
if not defined Eingabe echo Keine Zahlen eingegeben - %Bat% wird nicht erzeugt/geaendert! & goto :eof  
27.
>>"%Bat%" echo @echo off ^& setlocal enableDelayedExpansion  
28.
>>"%Bat%" echo cd "C:\getit_PDF\"  
29.
>>"%Bat%" echo for /f "tokens=*" %%%%i in ('dir /b "C:\getit_PDF\*.pdf"') do ren "%%%%~i" "%Eingabe3%#%%~nxi"  
30.
>>"%Bat%" echo cd "C:\Programme\FreePDF_XP\Skript\Profil1"  
31.
>>"%Bat%" echo FTP -s:1.txt  
32.
>>"%Bat%" echo cd "C:\getit_PDF\"  
33.
>>"%Bat%" echo del "*.pdf"
exit
Bitte warten ..
Mitglied: Biber
17.07.2009 um 20:40 Uhr
Moin MrSonei6,

ich les das MFM schon seit 2 Tagen
Du sollst jetzt kein Magazin für Männer lesen, sondern einfach die Hilfe bei Cd /? und PushD /? und PopD /?
Dann hättest Du jetzt NICHT immer noch ein "echo cd "C:\getit__PDF\" drin , wie bastla und ich es schon mehrfach unkorrigiert gelassen haben.
Außerdem

  • immer zusätzlich zum "@echo off" und das "setlocal" verwenden - siehe Setlocal /?
  • hier: "echo echo off & setlocal enableDelayedExpansion >> 1.bat " muss das &-Zeichen maskiert werden (als ^&)
  • und die Zeile "set Eingabe3=%Eingabe%+_c001_+%Eingabe2% " braucht zwar keine "+"-Zeichen (einfach weglassen)
  • aber die bringt erst etwas, NACHDEM %Eingabe% und %Eingabe2% einen Wert haben. die Zeile muss weiter unten stehen.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
17.07.2009 um 21:58 Uhr
@MrSonei6
Sorry - war etwas in Eile und deshalb leider ungenau ...

Frage 2)
was muss ich wo ändern damit die konfig.bat nicht im Zielordner, der zu erstellenden Dateien 1.txt und 1.bat, liegen zu braucht.
Z.B das die konfig.bat von überall ausgeführt werden kann und die beiden dateien immer in
C:\Programme\FreePDF_XP\FTP\Profile
landen
Dazu war eigentlich die Zeile
set "Bat=1.bat"
gedacht (auch der geplante Hinweis darauf ist bei meinem Kommentar auf der Strecke geblieben). Wenn Du diese Zeile an den Anfang des Batches stellst, um eine Pfadangabe erweiterst und danach anstelle von "1.bat" konsequent "%Bat%" verwendest, wird das klappen; mit der "1.txt" kannst Du analog dazu verfahren.
@Biber
Danke für's Geradebiegen - bin selbst noch etwas unrund (keine Sorge, nicht äußerlich ) ...

Grüße
bastla
Bitte warten ..
Mitglied: MrSonei6
17.07.2009 um 22:37 Uhr
Vielen Lieben dank biber jetzt funktionierts
Darauf wär ich nie gekommen das man set wert3 weiter runter setzen muss, aber im nachhinein klingsts logisch. Ech super klasse

Wegen dem Pushd welches den Pfad speichert was dann wiederum PopD ausließt.

Wenn ich nun in PushD dasVverzeichniss eingebe wo die 1.bat und 1.txt erstellt werden sollen muss ich so zu sagen gleich nach PushD PopD ausführen aber was bringd das?
Warum kann ich nicht einfach mit cd und den Pfad angeben?

Hier mal die ersten drei geänderten Zeilen

@ECHO OFF
PUSHD "C:\Program Files\FreePDF_XP\Skript\Profil1"
POPD
del 1.bat
del 1.txt
..


Die beiden Dateien werden aber immer noch in dem Verzeichniss angelegt in dem die .bat ausgeführt wird?!

Alss CMD hilfe steht drin man soll PUSHD so angeben [Pfad | ..]
Eftl hab ich das falsch gemacht? was bedeutet der Strich?
Bitte warten ..
Mitglied: bastla
17.07.2009 um 22:56 Uhr
Hallo MrSonei6!
Wenn ich nun in PushD dasVverzeichniss eingebe wo die 1.bat und 1.txt erstellt werden sollen ...
... ist das eine mögliche Vorgangsweise - die andere (nämlich vollständige Pfade zu verwenden) habe ich unten erwähnt - diese könnte so aussehen:
set "Bat=C:\Program Files\FreePDF_XP\Skript\Profil1\1.bat"
Noch besser wäre die Verwendung der Systemvariablen %ProgramFiles%, da so unabhängig von der Windows-Version der richtige "Programme"-Ordner verwendet wird - das sähe dann so aus:
set "Bat=%ProgramFiles%\FreePDF_XP\Skript\Profil1\1.bat"
Da im Pfad Leerzeichen enthalten sein können, muss dieser bei der Verwendung immer unter Anführungszeichen stehen (was ich in meinem Vorschlag oben bereits berücksichtigt hatte - siehe
>"%Bat%" echo ...
... muss ich so zu sagen gleich nach PushD PopD ausführen aber was bringd das?
"pushd" und "popd" sollen natürlich nicht unmittelbar nacheinander verwendet werden, sondern in der Art, dass mit "pushd" ein sicheres Wechseln des aktuellen Verzeichnisses (auch auf ein anderes Laufwerk) möglich ist, wobei gleichzeitig der vorher aktuelle Pfad zwischengespeichert wird, und mit "popd" der (temporäre) Verzeichniswechsel nach der Bearbeitung der Dateien wieder rückgängig gemacht wird.
Warum kann ich nicht einfach mit cd und den Pfad angeben?
Kannst Du ja, aber mit dem Zusatz "/d" wird sicher gestellt, dass auch das richtige Laufwerk verwendet wird - ein Test an der Kommandozeile mit
C:\>cd x:\Unterordner
bzw
C:\>cd /d x:\Unterordner
zeigt Dir den Unterschied. Im ersten Fall änderst Du den aktuellen Pfad für Laufwerk X:, bräuchtest aber danach noch ein
C:\>x:
um tatsächlich im Pfad "x:\Unterordner" zu landen - im zweiten Fall wird unmittelbar gewechselt, sodass der Prompt danach
X:\Unterordner>
lauten würde.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
18.07.2009 um 21:06 Uhr
Moin MrSonei6.


und noch eine weitere Deiner Fragen zu beantworten:
Alss CMD hilfe steht drin man soll PUSHD so angeben [Pfad | ..]
Eftl hab ich das falsch gemacht? was bedeutet der Strich?
Die Syntax bzw die Bedeutung der in der Hilfe zu einzelnen CMD-Befehlen verwendeten Zeichen wie "[", "]" oder "|" erfährst Du am schnellsten in der grafischen Windows-Hilfe "Hilfe und Support". Und dort mal nach "pushd" suchen.

Kurz gefasst bedeutet "|" in einer Aufzählung von mehreren Parametern immer EINTWEDER...ODER. (nicht beides gleichzeitig).

Grüße
Biber

P.S. & OT zum mehrfach verwendeten "das Verzeichniss". Das einzige deutsche Wort mit der Endung "-niss" ist meiner Kenntnis nach das Wort für die männliche Faltenwespe ("der Horniss"). Aber gute Nachricht: ich stehe nach wie vor dazu: ein Kasten Becks für den ersten, der mir 3 deutsche Worte mit Endung "-niss" liefert.

P:P:S. @bastla
bin selbst noch etwas unrund...
Na ja, die vielen ausgeruhten Neuankömmlinge werden es sicher versuchen, dich für ein paar neue Runden zu gewinnen.
Was machst Du eigentlich schon hier? Urlaub wegen Regen abgebrochen?
Oder werfen nur große Ereignisse ihre Schatten voraus?
Bitte warten ..
Mitglied: MrSonei6
20.07.2009 um 17:29 Uhr
Hi ich versuche gerade mein script von oben Vista Fähig zu machen, da ich ja in der bat eine txt datei erstelle und eine weitere .bat erstelle funktioniert das ganze nicht in Vista im Laufwerksbuchstaben c:\ zumindest!. Nicht mal dann wenn ich die .bat als admin ausführe.
runas admin geht nciht da das skript auf vielen verwschiedenen Rechner laufen soll. Ist ja eh das selbe wie rechtsklick und als Admin ausführen?

Gibt es eine Möglichkeit die .bat so umzuschreiben das sie auch in Vista in c:\ funktioniert und dateien erstellen darf?
Bitte warten ..
Mitglied: bastla
20.07.2009 um 18:01 Uhr
Hallo MrSonei6!

Da es sich ja offensichtlich um eher temporäre Dateien handelt, könntest Du diese ja gleich im %temp%-Ordner erstellen lassen, also etwa
01.
set "Bat=%temp%\1.bat" 
02.
set "Txt=%temp%\1.txt"
und dann, wie schon oben vorgeschlagen, nur noch über die jeweilige Variable %Bat% bzw %Txt% darauf zugreifen ...

Grüße
bastla
Bitte warten ..
Mitglied: MrSonei6
20.07.2009 um 18:06 Uhr
Hmmm wie meinst du das?

Dann liegen die zwei Dateien doch nicht im richtigen Ordner unter C:\Programme\FreePDF\Skript
sondern uunter C:\temp oder? Free PDF braucht die dateien aber in dem Programm Pfad.
Bitte warten ..
Mitglied: bastla
20.07.2009 um 18:12 Uhr
Hallo MrSonei6!
Free PDF braucht die dateien aber in dem Programm Pfad.
Dann erstelle im entsprechenden Pfad eine (immer gleich bleibende) "1.bat" mit dem Inhalt:
@%temp%\1.bat
um damit die im %temp%-Verzeichnis liegende angepasste "1.bat" zu starten.

Grüße
bastla
Bitte warten ..
Mitglied: MrSonei6
20.07.2009 um 18:19 Uhr
ja klingt logisch aber der Inhalt des temp Ordners wird auch des öfteren einfach mal so gelöscht um wieder Speicherplatz zu gewinnen.
Dann müsste ich so zu sagen einen eigenen Ordner anlegen unter C:\ und das darf ich leider nicht ;(

Gibt es wirklich keine Möglichkeit dies zu umgehen?
Bitte warten ..
Mitglied: bastla
20.07.2009 um 19:09 Uhr
ja klingt logisch aber der Inhalt des temp Ordners wird auch des öfteren einfach mal so gelöscht um wieder Speicherplatz zu gewinnen.
Dann verwende eben einen anderen Speicherort unterhalb von %LOCALAPPDATA% oder %APPDATA% (je nachdem, ob die Datei(en) in's servergespeicherte Profil sollen) ...

Grüße
bastla
Bitte warten ..
Mitglied: MrSonei6
23.07.2009 um 17:40 Uhr
kann mir evtl einer erklären was hier genau passiert?

for /f "tokens=*" %%i in ('dir /b "C:\getondemand_PDF\*.pdf"') do ren "%%~i" "%Eingabe%#%%~nxi"

ich kapier dieses %%~i" " nicht und dan das %#%%~nxi" auch nicht

lg
Bitte warten ..
Mitglied: bastla
24.07.2009 um 00:21 Uhr
Hallo MrSonei6!

Zu
for /f "tokens=*" %%i in ('dir /b "C:\getondemand_PDF\*.pdf"') do ren "%%~i" "%Eingabe%#%%~nxi"
Grundsätzlich wird mit dieser Schleife jeder vom Befehl
dir /b "C:\getondemand_PDF\*.pdf"
gelieferte Dateiname (erfasst werden alle .pdf-Dateien des Ordners "C:\getondemand_PDF" bzw, um genau zu sein, auch alle Unterdordner, die auf ".pdf" enden) als "%%i" zur weiteren Verarbeitung (passiert nach dem "do") zur Verfügung gestellt.

Diese Verarbeitung
ren "%%~i" "%Eingabe%#%%~nxi"
hat den Zweck, jede dieser Dateien, zur Absicherung für den Fall, dass Leerzeichen im Namen enthalten wären, in der Schreibweise Anführungszeichen - Dateiname ohne umgebende Anführungszeichen (deshalb nicht "%%i" sondern "%%~i") - Anführungszeichen umzubenennen, wobei der neue Name gebildet wird aus
  • dem Inhalt der Variablen %Eingabe%
  • einem "#" und
  • dem ursprünglichen Namen ("%%~nxi" steht für Name und Dateityp von "%%i" - siehe dazu die Hilfe zu "for" gegen Ende).
Besser wäre übrigens die Schreibweise
for %%i in ("C:\getondemand_PDF\*.pdf") do ren "%%~i" "%Eingabe%#%%~nxi"
da hier in "%%i" nicht nur der Dateiname, sondern der gesamte Pfad zur Verfügung steht - damit funktioniert das Umbenennen unabhängig vom aktuellen Verzeichnis (braucht daher kein vorheriges "cd" oder "pushd"), während oben eigentlich zur Sicherheit
ren "C:\getondemand_PDF\%%i" "%Eingabe%#%%~nxi"
verwendet werden sollte, da, wie erwähnt, in "%%i" eben nur der Dateiname steht.

Grüße
bastla
Bitte warten ..
Mitglied: MrSonei6
24.07.2009 um 08:34 Uhr
ahh vielen Dank ;)

also könnte ich deiner Meinung nach dieses Tokens weglassen? hab gesucht und raus bekommen das "tokens" aus einer Datei auslesen lässt.
Dies brauch ich hier nicht oder? Und zu den %%~i der Wert "i" wurde der wirlkürlich verwendet? Könnte es auch "%%~a" oder "%%~hallo" heißen?
Bitte warten ..
Mitglied: bastla
24.07.2009 um 08:49 Uhr
Hallo MrSonei6!
hab gesucht und raus bekommen das "tokens" aus einer Datei auslesen lässt.
Das ist so nicht vollständig: Mit einer "for /f"-Schleife (und nur in diesem Fall kannst Du "tokens" verwenden) wird der Inhalt einer (Text-)Datei zeilenweise verarbeitet, allerdings auch, so wie in diesem Fall, die Ausgabe eines Befehles ("dir /b ..."), wobei die Zeile bei Bedarf in Einzelteile, die "Tokens", zerlegt werden kann (bzw defaultmäßig anhand der Trennzeichen "Leerzeichen" und "Tab" zerlegt wird). Die Angabe von "tokens=*" sorgt dafür, dass keine Zerlegung erfolgt, sondern die gesamte Zeile zurückgegeben wird. Im Übrigen: "for /?" ...

... dann findest Du auch diesen Hinweis: %Variable Ein ersetzbarer Parameter bestehend aus einem einzelnen Buchstaben.
Könnte es auch "%%~a" oder "%%~hallo" heißen?
Die Verwendung von "i" hat sich eingebürgert, es kann aber auch ein anderer einzelner Buchstabe sein.

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Windows Server
gelöst Sichtbares Ausführen einer BAT-Datei mittels GPOs (10)

Frage von DasWombat1993 zum Thema Windows Server ...

Windows 7
gelöst Bat Datei erstellen für Homeroot (2)

Frage von leon22 zum Thema Windows 7 ...

Batch & Shell
Mehrere.csv Dateien zusammenfügen zu einer Datei mit bat (4)

Frage von Piotrney zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...