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

Verwendung einer gesetzten Variable noch in derselben Eingabezeile

Frage Entwicklung Batch & Shell

Mitglied: EvaEden

EvaEden (Level 1) - Jetzt verbinden

05.05.2014, aktualisiert 06.05.2014, 1608 Aufrufe, 9 Kommentare, 2 Danke

Liebe Gemeinde,

ich habe ein simples Problem: Ich muss ein paar Befehle in einer Zeile abschicken.
Kein Problem, da verknüpfe ich sie doch mit "&".
Aber wenn ich mit set eine Variable definiere, kann ich sie nicht in der selben Zeile benutzen.

Bsp: set a=abc&echo %a%

Wenn ich dieselbe Zeile nochmal abschicke, funktioniert es. Der set-Befehl muss also mit Enter abgeschickt werden, bevor die Variable initialisiert wird!?
Könnt ihr mir helfen?

Vielen herzlichen Dankeschön!
Mitglied: Budders
05.05.2014 um 13:26 Uhr
Am Anfang des Codes ein
setlocal enabledelayedexpansion

und dann anstatt %a% ein !a! verwenden, das sollte das gewünschte Ergebnis erzielen.

Mit freundlichen Grüßen Budders
Bitte warten ..
Mitglied: EvaEden
05.05.2014 um 13:44 Uhr
Hi Budders,

das habe ich auch schon rauf und runter probiert:

setlocal enabledelayedexpansion&set a=abc&echo !a!

funktioniert leider auch nicht...
Bitte warten ..
Mitglied: EvaEden
05.05.2014 um 13:50 Uhr
...was ich eigentlich möchte:

set LOG=Logs%DATE:~6,4%%DATE:~3,2%%DATE:~,2%-%TIME:~,2%%TIME:~3,2%%TIME:~-5%.zip&echo 7-zip a "%LOG: =0%" "FILES"

wollte das Leerzeichen bei Zeiten vor 10:00 Uhr durch 0 ersetzt haben: " 9:00" -> "09:00"

LG, Eva~
Bitte warten ..
Mitglied: Budders
05.05.2014, aktualisiert um 13:53 Uhr
Willst du den ganzen Code in eine Zeile packen?
Und bei mir funktioniert das ohne Probleme, auch in einer Zeile. Jedoch nur aus einer Batch Datei, aus der Kommandozeile wird mir auch nur !a! ausgespuckt
Bitte warten ..
Mitglied: EvaEden
05.05.2014 um 13:56 Uhr
Ja, leider! Es ist ein externer Aufruf aus Python heraus: os.system('DOS-BEFEHLE'). Den Umweg über eine extra Batch wollte ich mir sparen.

Vielen Dank Dir!
Bitte warten ..
Mitglied: Budders
05.05.2014 um 13:59 Uhr
Dann bin ich leider überfragt. Das tut mir leid.
Aber wenn du eine Lösung gefunden hast, kannst du diese gerne hier posten, mich würde das ebenfalls interessieren.
Bitte warten ..
Mitglied: Biber
LÖSUNG 05.05.2014, aktualisiert 06.05.2014
Moin EvaEden,

wenn du die delayed expansion auch schon in einer Eingabezeile, also ohne einen Batch nutzen willst, dann musst du (einmalig) DelayedExpansion mittels Registry-Eintrag als Standardverhalten setzen.
Als Normal-Benutzer so:

01.
 reg add "HKCU\Software\Microsoft\Command Processor" /v DelayedExpansion /t REG_DWORD /d 0x1
Mit "mehr" Rechten kannst du es auch im Zweig HKLM aktivieren als Default für alle Benutzer, falls das Sinn machen sollte.

Jedesmal danach kannst du in jedem neuen CMD-Fenster dein Beispiel
setlocal enabledelayedexpansion&set a=abc&echo !a!
... erfolgreich ausprobieren und natürlich auch deine %log%--String-Erzeugung.

Grüße
Biber
Bitte warten ..
Mitglied: rubberman
LÖSUNG 06.05.2014, aktualisiert um 08:34 Uhr
Hallo EvaEden.

Es ist ein externer Aufruf aus Python heraus

Ich wette, dass es in Python auch so etwas wie ein CreateProcess oder vielleicht sogar eine eigene Klasse gibt, mit der man 7-Zip sinnvoller bedienen könnte. Selbst wenn nicht, wird es doch möglich sein deinen Timestamp im Pythoncode zusammen zu bauen, statt in der aufgerufenen Kommandozeile.

Wie auch immer: Deine Kommandozeile führt dazu, dass die cmd.exe gestartet wird. Ergo kannst du den Aufruf der CMD auch gleich in die Kommandozeile einbauen und dabei gibt es bekanntlich die Option /v:on um die verzögerte Variablenerweiterung einzuschalten.
cmd /v:on /c "set LOG=Logs%DATE:~6,4%%DATE:~3,2%%DATE:~,2%-%TIME:~,2%%TIME:~3,2%%TIME:~-5%.zip&echo 7-zip a "!LOG: =0!" "FILES""
Grüße
rubberman
Bitte warten ..
Mitglied: EvaEden
06.05.2014 um 08:34 Uhr
Vielen Dank Biber!

Auf Dich kann man sich wirklich verlassen! Du findest immer eine Lösung!!!


Vielen Dank Rubberman!

Das ist genau die unkomplizierte Lösung die ich brauche! War mir nicht bewusst, dass ich das Commandset nach cmd noch in Anführungszeichen setzen muss (ohne die geht es nicht). Da hätte ich ewig gesucht!

Herzlichst
Eva~
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Selected Gridview Value in Variable schreiben (4)

Frage von reissaus73 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

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

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...