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, 1619 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.

MfG 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Sonderzeichen aus einer Variable entfernen? (13)

Frage von Kriegstreiber zum Thema Batch & Shell ...

Batch & Shell
gelöst In einer Batch variable die Datei extension ermitteln ? (4)

Frage von Kriegstreiber zum Thema Batch & Shell ...

Neue Wissensbeiträge
Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(2)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(5)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Viren und Trojaner

Neue Magazin Ausgabe: Malware und Angriffe abwehren

Information von Frank zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Windows Systemdateien
Warum System auf "C:" (29)

Frage von DzumoPRO zum Thema Windows Systemdateien ...

Cloud-Dienste
gelöst Bitcoins minen über Nacht? (16)

Frage von 1410640014 zum Thema Cloud-Dienste ...

Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Batch & Shell
gelöst Batch um Benutzer aus Sitzung abzumelden (15)

Frage von zeroblue2005 zum Thema Batch & Shell ...