How do you strip quotes out of an ECHO'ed string in a Windows batch file?

后端 未结 12 1887
萌比男神i
萌比男神i 2020-12-05 04:23

I have a Windows batch file I\'m creating, but I have to ECHO a large complex string, so I\'m having to put double quotes on either end. The problem is that the quotes are

12条回答
  •  佛祖请我去吃肉
    2020-12-05 04:43

    The following batch file starts a series of programs with a delay after each one.

    The problem is to pass a command line with parameters for each program. This requires quotes around the program argument, which are removed when the call is made. This illustrates a few techniques in batch file processing.

    Look in the local subroutine :mystart for how an argument in quotes is passed in, and the quotes are removed.

    @echo off
    
    rem http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/if.mspx?mfr=true
    
    rem Start programs with delay
    
    rem  Wait n seconds
    rem  n number retries to communicate with the IP address
    rem  1000 milliseconds between the retries
    rem  127.0.0.1 is the LocalHost
    rem  start /b (silent)  /min (minimized) /belownormal (lower priority)
    rem  /normal provides a no-op switch to hold the place of argument 1
    
    rem  start  /normal "Opinions"  %SystemRoot%\explorer.exe /e,d:\agar\jobs\opinion
    rem  ping 127.0.0.1 -n 8 -w 1000 > nul
    
    rem   Remove quotes in Batch
    rem     http://ss64.com/nt/syntax-dequote.html
    rem   String manipulation in Batch
    rem     http://www.dostips.com/DtTipsStringManipulation.php
    rem   ^ line continuation
    rem   
    rem   set p="One Two"      p has the exact value  "One Two" including the quotes           
    rem   set p=%p:~1,-1%      Removes the first and last characters
    rem   set p=%p:"=%         Removes all double-quotes
    rem   set p=%p:cat=mouse%  Replaces cat with mouse
    
    rem  ping 127.0.0.1 -n 12 -w 1000 > nul
    rem        1       2            3                                                         4
    
    @echo on
    call :mystart /b/min  "Opinions"   "%SystemRoot%\explorer.exe  /e,d:\agar\jobs\opinion"   8  
    @echo on
    call :mystart /b/min  "Notepad++"  D:\Prog_D\Notepad++\notepad++.exe  14
    @echo on
    call :mystart /normal "Firefox"    D:\Prog_D\Firefox\firefox.exe      20
    @rem call :mystart /b/min "ProcessExplorer"  D:\Prog_D\AntiVirus\SysInternals\procexp.exe  8
    @echo on
    call :mystart /b/min/belownormal "Outlook" D:\Prog_D\MSOffice\OFFICE11\outlook.exe  2
    @echo off
    goto:eof
    
    :mystart
    @echo off
     rem  %3 is "program-path  arguments" with the quotes. We remove the quotes
     rem  %4 is seconds to wait after starting that program
     set p=%3
     set p=%p:"=%
     start  %1  %2  %p% 
     ping 127.0.0.1 -n %4 -w 1000 > nul
     goto:eof
    

提交回复
热议问题