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

gelöst Batch Variable in Dateinamen umleiten

Mitglied: alexander01

alexander01 (Level 1) - Jetzt verbinden

10.06.2009, aktualisiert 20:11 Uhr, 6458 Aufrufe, 8 Kommentare

Hallo, ich habe eine Frage:

in einem batch-Script sollen die aus einer zweizeiligen Datei ausgelesenen und vorbereiteten Daten als Variablen in einem neu zu erstellenden Dateinamen erscheinen:

for /f "delims=" %%f in (c:\neu.bdt) do call : loop "%%f"
goto ende

:loop
set "Quelle=%~1"
set "Ziel=%Quelle:~7%"
goto :eof

ein @echo %Ziel% bringt mir eine (richtige) zweizeilige Ausgabe mit den richtigen Daten.
Baue ich %Ziel% in den dateinamen ein, wird nur die letzte Variable verwendet.
Es sollen aber beide Variablen unmittelbar nebeneinander im Dateinamen erscheinen.

Beispiel:

@echo %Ziel% ergibt:

Haus
Baum

start "word" "k:\%Ziel%.doc

es wird k:\Baum.doc geöffnet, es soll aber k:\HausBaum.doc geöffnet werden.

Ich wäre für Hilfe dankbar.

alexander
Mitglied: pieh-ejdsch
10.06.2009 um 21:03 Uhr
01.
@echo off & setlocal enabledelayedexpansion 
02.
for /f "delims=" %%f in (c:\neu.bdt) do call :loop "%%f" 
03.
start "word" "k:\%Ziel%.doc 
04.
goto :eof 
05.
:loop 
06.
set /a n+=1 
07.
set "Quelle%n%=%~1" 
08.
set "Ziel=%Ziel%!Quelle%n%:~7!" 
09.
goto :eof
Bitte warten ..
Mitglied: Biber
10.06.2009 um 21:15 Uhr
Moin alexander01,

willkommen im Forum.
Der Denkfehler ist: das Innere des :loop-Blocks in Deinem Schnipsel wird bei jeder Zeile wieder neu ausgeführt.
Da nur die zuletzt gesetzte Variable %Ziel% nach Abarbeitung aller Zeilen "überlebt", ist das Ergebnis immer (egal ob Du 2 oder 2000 Zeilen liest) das Umformungsergebnis der letzten Zeile.

Es gibt mehrere mögliche Alternativstrategien:
  • explizit die erste und die letzte Zeile lesen (geht schief, wenn nur eine Zeile da ist)
  • explizit die Zeile #1 und die Zeile #2 lesen
  • oder aber zu sagen: egal, ob 2,3 oder 5 Zeilen: ALLE Zeilen sollen aneinandergekettet werden und davon halt die ersten 8 Zeichen sind der Name.

Ich wähle mal die Strategie a)
01.
 @echo off & setlocal 
02.
::erste Zeile lesen 
03.
Set /p quelle=<c:\neu.bdt 
04.
::jetzt mit skip Zeile 1 überlesen 
05.
:: (und unterstellen, es gibt nur eine weitere Zeile!) 
06.
for /f "skip=1 delims=" %%f in (c:\neu.bdt) do set "Quelle=%quelle%%%f" 
07.
set "Ziel=%Quelle:~7%" 
08.
Start "whatever"  "k:\%Ziel%.doc" 
09.
goto :eof
[ungetestet]

Grüße
Biber
Bitte warten ..
Mitglied: alexander01
10.06.2009 um 21:38 Uhr
danke euch beiden!

Biber, die zweite Variante wäre mir die angenehmste! zwei (oder evtl. besser 3) definierte Zeilen sollten den Namen bilden.

Ich probiere gleich ...
danke

Grüße

alexander
Bitte warten ..
Mitglied: pieh-ejdsch
11.06.2009 um 01:08 Uhr
ups hab grad nen SchusselFehler von mir gesehen
Zeile 08
set "Ziel=%Ziel%!Quelle%n%:~7!"

wird gleich gefixt
Bitte warten ..
Mitglied: alexander01
11.06.2009 um 21:03 Uhr
Hallo,
ich habe jetzt auf der Basis eurer Informationen mein Script angepasst:
01.
if exist %vz%\oat_roh.bdt del %vz%\oat_roh.bdt 
02.
if exist %vz%\oat_fein.bdt del %vz%\oat_fein.bdt 
03.
 
04.
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ %vz%\orig.bdt') do @(for /L %%a in (6,2,8) do @if %%i==%%a @echo %%j>>%vz%"\oat_roh.bdt") 
05.
 
06.
for /f "delims=" %%f in (%vz%\oat_roh.bdt) do call :sprung1 "%%f" 
07.
goto ende 
08.
 
09.
 
10.
:sprung1 
11.
set "Quelle=%~1" 
12.
set "Ziel=%Quelle:~7%" 
13.
@echo %Ziel%>>%vz%"\oat_fein.bdt" 
14.
goto :sprung2 
15.
 
16.
 
17.
:sprung2 
18.
set /p roh=<%vz%\oat_fein.bdt 
19.
for /f "skip=1 delims=" %%f in (%vz%\oat_fein.bdt) do set "fein=%roh%%%f" 
20.
goto :eof 
21.
 
22.
:ende 
23.
start "word" "k:\%fein%.doc"
mit einer zweizeiligen Datei funktioniert alles gut!
Noch zwei Fragen habe ich:
ist die Datei 3 oder 4-zeilig, funktioniert es nicht mehr, es wird, wie weiter oben besprochen, nur die erste und die letzte Zeile in den Namen (%fein%) übernommen.
1. Könnte man das Script noch verfeinern, um eine 3. und eine 4. Zeile hinzuzufügen (das reicht dann auch)?
2. Wie "formatiert" man %fein%, das nicht "wort1wort2" entsteht sondern z.B. "wort1, wort2" ?

ich danke für Hilfe

Gruß
Alexander




^^[Edit Biber] Code in Code-Tags gesetzt. [/Edit]
Bitte warten ..
Mitglied: pieh-ejdsch
11.06.2009 um 21:45 Uhr
Hallo Alexander
Hier nochmal eine Version um Dateien mit beliebiger Zeilenanzahl zu starten. öffnet also jedes Dokument nach auslesen jeder geraden Zeile.
Komma hinzugefügt
01.
@echo off & setlocal enabledelayedexpansion 
02.
for /f "delims=" %%f in (c:\neu.bdt) do call :loop "%%f" 
03.
goto :eof 
04.
:loop 
05.
if not defined part1 (set part1=1 & set /a n+=1) else set part1= 
06.
set "Quelle=%~1" 
07.
if defined part1 set "Ziel%n%=%Quelle:~7%" else start "word" "k:\!Ziel%n%!,%Quelle:~7%.doc"  
08.
goto :eof
achso und wenn Du das zweite Token in Deiner Forschleife
for /f "tokens=1,* delims=:" %%i in ......
nicht auswertest genügt doch Dieser Code
gleich für Deinen Code angepasst und entschlakt
01.
@echo off & setlocal enabledelayedexpansion 
02.
for /f "delims=:" %%i in ('findstr /n $ %vz%\orig.bdt') do (for /L %%a in (6,2,8) do if %%i==%%a call :loop "%%i") 
03.
goto :eof 
04.
:loop 
05.
if not defined part1 (set part1=1 & set /a n+=1) else set part1= 
06.
set "Quelle=%~1" 
07.
if defined part1 set "Ziel%n%=%Quelle:~7%" else start "word" "k:\!Ziel%n%!,%Quelle:~7%.doc"  
08.
goto :eof
so... - Schusselfehler entfernt
nochn Fehler entfernt - man ich brauchn Batchprüftool - oder mach selbst eins...
Version 2.1b durch Version 2.2 ersetzt
Bitte warten ..
Mitglied: alexander01
13.06.2009 um 10:08 Uhr
funktioniert bei mir nicht, habe "pause" eingebaut, trotzdem wird nichts angezeigt, der das Fenster wird sofort geschlossen.
gruß
Alexander
Bitte warten ..
Mitglied: pieh-ejdsch
13.06.2009 um 13:26 Uhr
Wie ist denn Deine orig.bdt aufgebaut?
es soll ja nur die 6. und 8. Zeile verwendet werden.
Wird vz gesetzt?
Ich hab ja Deine Batch net komplett bzw ohne
Set vz=....

Nimm die CMD und ersetze
01.
@echo off & setlocal enabledelayedexpansion
mit
01.
@echo ON & setlocal enabledelayedexpansion
abspeichern
Wintaste+R
cmd
und Enter
dann ziehst Du Deinen Batch rein
und Enter
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell-Befehl in Variable umleiten
gelöst Frage von CoreknabeBatch & Shell5 Kommentare

Moin, ich möchte unseren Exchange mit einem Powershell-Skript konfigurieren. Die Ausgabe eines Befehls soll in einem Windows-Fenster mit OK-Button ...

Batch & Shell

In einer Batch-Datei einen variablen Teil eines Dateinamens auslesen

gelöst Frage von dh0815Batch & Shell5 Kommentare

Hallo Leute, das ist mein erster Post hier und ich möchte mich vorab schon dafür entschuldigen, wenn ich etwas ...

Batch & Shell

Dateinamen mit Punkt einer Variablen zuweisen

gelöst Frage von DanilowitzBatch & Shell4 Kommentare

Hallo Leute, Bin neu hier im Forum und hätte eine Frage zur Batchprogrammierung, zu welcher ich im Internet keine ...

Batch & Shell

Variabler Dateiname innerhalb einer Batchdatei

gelöst Frage von SpikeeeBatch & Shell5 Kommentare

Hallo Liebe Gemeinde! Vielleicht eine relativ simpel zu lösende Aufgabe, jedoch tu ich mich da grad ein wenig schwer, ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 23 StundenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 TagHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...

Windows Netzwerk
Backup über WAN
Frage von petereWindows Netzwerk11 Kommentare

Hallo, ich muss aus einem entfernten WAN (synchrone 1Gbit) Daten sichern. Dabei handelt es sich sowohl um wenige große ...