2017-08-04 39 views
1

我試圖刪除一個doskey宏的引用引號,它可以讓我使用「export」作爲「set」。下面是我有:從doskey宏(export = set)中刪除引號

doskey export=set $* 

除了當我用下面的運行:

export VAR="value" 

我結束了:

VAR="value" 

VS我想要的東西:

VAR=value 

我想我必須寫一點點'c'的方法精益「的輸入設置,但我不知道該怎麼做 - 就像」for(var1 = var2)set var1 =〜var2「,但我不能得到任何這樣的工作。

幫助!

+0

沒有'export'命令。你用什麼方式使用'export'?如果要設置環境變量的值,請使用'SET'VAR =值「 – lit

+0

doskey.exe創建控制檯別名。默認情況下,只要「cmd.exe」從控制檯執行熟讀操作(即在控制檯輸入句柄上調用「ReadConsole」或「ReadFile」),就會生成別名。別名還可以專門爲其他可執行文件(如python.exe)創建。控制檯別名的工作方式是替換在行首匹配的文本。它不能在從控制檯讀取的輸入命令中的任何其他地方使用。它也不能在批處理腳本中使用。所以它的價值非常有限。 – eryksun

+0

控制檯允許以空格分隔的命令行的其餘部分參數化爲'$ 1',最高爲'$ 9',以及對於整個命令行的'$ *'參數化後的別名本身。您可以在替換字符串中使用'$ *',例如在一個'for'循環或其他。但請記住,CMD將從控制檯逐字讀取「for」循環,因此它必須是交互式命令行的有效語法。它並不像它被評估爲一個函數或調用'export.bat'腳本。 – eryksun

回答

0

你或許可以用做對循環太多,但這種情況很容易:

set ORIGARGS=%* 
set ARGCOPY= 
:copyargs 
    set "ARGCOPY=%ARGCOPY% %~1" 
    shift 
    if not [%1]==[] goto:copyargs 

即。 (逐行)

  1. 保存原來的%*因爲我們要摧毀它。
  2. 準備一個變量(ARGCOPY),以把轉換參數到
  3. 標籤(在第6行的goto的目標)
  4. 的第一個參數追加%1ARGCOPY,但除去引號(%~1
  5. shift所有參數(即什麼是%2變爲%1等)
  6. 如果我們已經達到參數的末尾,那麼%1沒有值,否則goto第3行,其中:copyargs標籤爲lo cated。

當您完成%ARGCOPY%將包含不帶引號的參數。

+0

哇,謝謝,我很欣賞如何工作的解釋。現在,我如何將它插入doskey宏? – Paul

+0

'export%ARGCOPY%'如果'export'是你的doskey宏。 – thebjorn

+0

請記住點贊所有有幫助的答案,然後選擇最符合您問題的答案。這將有助於未來的遊客,並給我點:-) – thebjorn