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 IPWünsch Dir wasWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Powershell ruft Batch-Datei auf: Leerzeichenproblem

Mitglied: Herbstengel

Herbstengel (Level 1) - Jetzt verbinden

23.12.2019 um 16:25 Uhr, 410 Aufrufe, 3 Kommentare

Hallo zusammen,

ich habe ein powershellskript, welches eine Batchdatei aufrufen soll und dieser einige Übergabeparameter (Befehlsparameter) übergeben soll.
In der Batchdatei soll dann die Anwendung MSBUILD von Microsoft Visual Studio einen Compiliervorgang mit den übergebenen Parametern vornehmen.

Das funktioniert insofern ganz gut, außer wenn man Leerzeichen in einem der Befehlsparameter drin hat. Damit kommt die Batchdatei nicht klar.
Ist der Fall, weil eine Datei in C:\Program Files (x86)\Microsoft Visual Studio\...liegt.

Konkret:

powershell-Datei:

function BuildTest
{

param( [string]$basicsetting , [string] $compilingBatchFilePath, [string ]$solution_Dir, [string ]$solution_FilePath, [string ]$msbuild_Path)

#batchfile / Befehlsparameter (batch): %1 %2 %3 %4
$p = Start-Process -FilePath "cmd.exe" -ArgumentList "/c $compilingBatchFilePath $basicsetting $solution_Dir $solution_FilePath $msbuild_Path" -PassThru

Wait-Process -id $p.ID -timeout 500
....
....


wobei

$compilingBatchFilePath "C:\_plc\PLL02\main\Sourcefiles\PLL02\build.bat

$basicsetting "Test"
$solution_Dir "C:\_steuerung\main\Sourcefiles\test\"
$solution_FilePath "C:\_steuerung\main\Sourcefiles\test\test.sln"
$msbuild_Path "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\"


Batch-Datei:

REM --------- Parameter List -------------
IF NOT "%1" == "" SET "BASICSETTING=%1"
IF NOT "%2" == "" SET "SOLUTIONDIR=%2"
IF NOT "%3" == "" SET "SOLUTIONFILEPATH=%3"
IF NOT "%4" == "" SET "MS_BUILDPATH=%4"
...
...
CALL %MS_BUILDPATH% %SOLUTIONFILEPATH% /p:Configuration="%BASICSETTING%";OutDir=.\%BASICSETTING%\bin_comp\VS\ /t:Clean;Build ....

%MS_BUILDPATH% wird als C:\Program interpretiert.

Bitte um eure Hilfe, vielen Dank!

Grüsse, Roger
Mitglied: mayho33
LÖSUNG 23.12.2019, aktualisiert um 20:46 Uhr
Hi!

Das Problem mit Leerzeichen in Strings umgehst du indem du den String in Anführungszeichen setzt:

Wenn ein Argument Leerzeichen enthält musst du das im Code in Anführungszeichen setzen. Dafür gibt es mehrere Varianten. Eine davon wäre:
In deinem Beispiel willst du mehrere Variablen miteinander übergeben. Sind das einzelne Argumente oder verknüpfst du hier Pfade miteinander?

Ein Argument musst du trotzdem mit einem Parameter einleiten:

-Argument1 "irgendwas" - Argument2 "nochwas" usw.

Zum Verknüpfen von Pfaden musst du das +Zeichen verwenden...
oder Dot. Net:


Grüße!
Bitte warten ..
Mitglied: Herbstengel
03.01.2020, aktualisiert um 20:39 Uhr
Hallo,

war jetzt ein paar Tage urlaubsbedingt offline
Habe mir den Vorschlag von mayho33 angeschaut, leider nicht zielführed.

Ich formuliere mein Anliegen nochmals, diesemal wie folgt vereinfacht:

Auf Powershell-Seite codiere ich

In einer "DOS-Box" (Eingabeaufforderung, also cmd.exe) würde damit das Batchfile test.bat wie folgt mit den beiden Übergabeparametern auf der Kommondozeile wie folgt aufgerufen werden:

In test.bat können dann die beiden Übergabeparameter %1 (hat ja den Wert Test) und %~2 (hat ja den Wert "C:\Verzeichnis mit Leerzeichen\", (der Tildeoperator ist hier unbedingt notwendig)) weiterverarbeitet werden.

So liefert ECHO. %~2 die Ausgabe "C:\Verzeichnis Mit Leerzeichen\".

Mein Problem ist es, die händische Eingabeaufforderungs-Syntax in der DOS-BOX genauso auf Powershell zu übertragen.

Bei

Start-Process -FilePath "cmd.exe" -ArgumentList "/c $BatchFilePath $BasicSetting $PathWithSpaces" -PassThru
fehlen auf Batch-Seite beim zweiten Parameter die Anführungszeichen

Powershell lässt aber diese Syntax nicht zu:

oder auch nicht diese Syntax

Bitte um weitere Hinweise, danke schön
Bitte warten ..
Mitglied: Herbstengel
04.01.2020 um 10:11 Uhr
ok, habe es hinbekommen

Entscheidender Hinweis in Add double quotes....

Damit:
damit weitere Verarbeitung möglich:

Bitte warten ..
Ähnliche Inhalte
Entwicklung

Batch oder Powershell für .txt-Datei

gelöst Frage von freshman2017Entwicklung5 Kommentare

Hallo liebe Gemeinde, ich habe eine .txt-Datei, die aus einer Artikelnummer und einem Bildname bestehen soll. Ausgangsdatei (export.txt) ist ...

Windows 10

Windows 10 Datenschutzeinstellungen via Powershell .batch Datei deaktivieren

gelöst Frage von 138921Windows 106 Kommentare

Hallo, ich schreibe gerade eine .batch Datei um alle Datenschutzeintellungen in Windows 10 zu deaktivieren. Wenn man unter Einstellungen ...

Batch & Shell

Batch und Powershell

gelöst Frage von michi-ffmBatch & Shell2 Kommentare

Hallo Zusammen, wie bekomme ich diesen Code in einer Batch datei zum laufen? Leider sind meine Fachkenntnisse in diesem ...

Batch & Shell

Batch with PowerShell

gelöst Frage von pandaworld78Batch & Shell3 Kommentare

Hallo, evtl. kann mir hier bei meinem Problem jemand helfen ? Es geht darum, die Variable (Variable_1) von PowerShell ...

Neue Wissensbeiträge
Sicherheit

Mehrere Sicherheitslücken in QNAP-NAS-Systemen aufgetaucht

Information von transocean vor 4 StundenSicherheit

Moin, QNAP hat drei Sicherheitsprobleme publik gemacht und empfiehlt sofortiges Update. Gruß Uwe

DNS

"Quickie": Mozillas "DNS over HTTPS" in pfSense blockieren

Anleitung von FA-jka vor 6 StundenDNS2 Kommentare

Hallo, Mozilla macht jetzt wohl wirklich Ernst mit "DNS over HTTPS" (kurz: DoH). Damit werden sämtliche DNS-Anfragen zu entsprechenden ...

Sicherheit
Störung bei Telematikinfrasturktur GEMATIK
Information von lcer00 vor 15 StundenSicherheit

Am 27. Mai 2020 ist es offenbar zu einer Fehlkonfiguration in der Zentralen Telematikinfrastruktur gekommen. Nähreres dazu findet sich ...

Informationsdienste

Trump vs Twitter - Angriff auf die Meinungsfreiheit?

Information von Frank vor 1 TagInformationsdienste3 Kommentare

Trump nutzt Twitter rege. Nach Hinweisen auf Falschbehauptungen drohte er dem Dienst. Was das bedeutet und die Konsequenzen dazu ...

Heiß diskutierte Inhalte
Sicherheits-Tools
Passwortmanager DGSVO (Deutscher Anbieter - Hoster)
Frage von SoccerdeluxSicherheits-Tools39 Kommentare

Hallo zuammen, ich arbeite für meine Kunden auf unterschiedlichen Geräten / Notebooks. Ich ärgere mich jedesmal, das ich mein ...

Batch & Shell
Ip-Adresse-Konfiguration speichern zur Wiederherstellung
gelöst Frage von alex1991Batch & Shell20 Kommentare

Hallo, ich bin eigentlich nicht in der IT-Abteilung, aber als Programmierer bin ich noch am nächsten dran. Deshalb wurde ...

Exchange Server
Automatische Antwort - Weiterleitung - zweite automatische Antwort - keine Weiterleitung?
Frage von dertowaExchange Server18 Kommentare

Hallo zusammen, da mich der Microsoftsupport ein wenig fassungslos machte versuche ich hier mal mein Glück und wenn es ...

Netzwerkgrundlagen
PF Sense - Keine Verbindung nach "außen"
gelöst Frage von mario89Netzwerkgrundlagen14 Kommentare

Hallo Leute, muss euch nochmalum Rat fragen. Weil irgendwie komme ich nicht weiter. Hintergrund ist, dass ich bei meiner ...