windows - ved hjælp af DOS start kommandoen, når de bestod argumenter har citater

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et spørgsmål om DOS start-kommandoen.
Jeg har allerede læst dette emne:
Ved hjælp af DOS 'start' kommandoen med parametre overført til det startede program
Ved at bruge kommandoen 'start' med parametre, der er overført til det startede program


men mit spørgsmål er lidt anderledes.


Jeg har dette problem: Jeg skal passere stier, der skal citeres.


For eksempel, hvis stien ikke har citater, fungerer det fint:


start '' app.exe -option c: \ myapp \ myfile.txt


men hvis stien har dobbelt citater virker det ikke.


Jeg har denne linje i min BATCH-fil:


start '' myapp.exe -option\% mypath\%


og når\% mypath\% indeholder dobbelt citater (stier, der har mellemrum eller andre tegn i navne), returnerer startkommandoen meget mærkelige resultater.


Tak
Sandro

Bedste reference


Normalt er det ikke et problem at bruge parametre der med citater, men du får problemer, hvis din app-sti også har citater.


Så skal du tilføje en ekstra CALL erklæring.


start "" app.exe -option c:myappmyfile.txt    - Works
start "" app.exe -option "c:myappmyfile.txt"    - Works
start "" "app.exe" -option c:myappmyfile.txt    - Works

start "" "app.exe" -option "c:myappmyfile.txt"    - Don't works
start "" CALL "app.exe" -option "c:myappmyfile.txt"    - Works

Andre referencer 1


Dette kan hjælpe, men det er en smule vej rundt omkring metode, og en lille ændring kan kræves for at passe til dit behov.


Tanken er at:



  1. Dump miljøvariablen, som har citater til en tekstfil med et foruddefineret navn. Som: 'Indstil mypath2> withQt.bat'

  2. Brug Windows Power Shell eller noget tredjeparts værktøj til at finde og erstatte citater i den fil.

  3. Opret en anden tekstfil (kun ét gangstrin), der indeholder streng 'Set'

  4. Brug kopieringskommando til at tilføje filen, der er nævnt i trin2, med filen, der blev oprettet i trin3, og opret en batchfil med et foruddefineret navn. Som: copy base.bat + withQt.bat withtqt.bat

  5. Kør batchfilen, som opretter en anden/erstatter miljøvariablen med værdi uden citater.



Beklager, jeg kunne ikke få noget mere elegant på dette tidspunkt.