我在Windows cmd.exe
(至少達到XP)中使用了一個非常妙的技巧來模擬不帶換行符的echo -n
的UNIX回顯行爲。例如,命令:Windows的「echo -n」不再適用於Win7
<nul: set /p junk= xyzzy
會產生完全六個字符被輸出,領先的空間和字符串「XYZZY」,而不是其他。
如果你有興趣爲什麼這個作品,它實際上是一個輸入命令,輸出
" xyzzy"
作爲提示,然後分配該輸入junk
環境變量之前等待用戶輸入。在這種特殊情況下,它不會等待用戶輸入,因爲它會從nul
設備獲取輸入。
它時,你要列出每行多於一個循環(每個文件一個迭代)(例如)處理文件是cmd
腳本相當有用。通過使用這一招,你可以簡單地輸出每個文件名後面加一個空格,沒有換行的話,循環,輸出一個換行符後完成了:
Processing files:
file1.txt file42.txt p0rn.zip
現在我發現,Windows 7中,空間下不再輸出,所以我得到的是:
Processing files:
file1.txtfile42.txtp0rn.zip
有沒有一種方法,我可以得到set /p
重新開始履行我的空間,或有在Win7另一種方式來達到同樣的效果?
我試過報價,使用.
(在echo
作品),甚至與^
逃避串,但沒有人似乎工作:
C:\Pax> <nul: set /p junk= xyzzy
xyzzy
C:\Pax> <nul: set /p junk=" xyzzy"
xyzzy
C:\Pax> <nul: set /p junk=' xyzzy'
' xyzzy'
C:\Pax> <nul: set /p junk=. xyzzy
. xyzzy
C:\Pax> <nul: set /p junk=^ xyzzy
xyzzy
我需要的是:
C:\Pax> some_magical_command_with_an_argument xyzzy
xyzzy
這將給我的空間(S)在開始和沒有換行結束。
+1因爲嘗試真的很難在批處理文件中執行任何SANE人員在PERL或PYTHON中執行的操作。 – 2013-04-05 02:44:07
@Warren,不幸的是,政策規定我們只能使用基本Win安裝中可用的內容。所以Perl和Python都不在了,儘管事實上我可以用一半的代碼來完成它:-)我可以用VBScript重寫腳本,但我希望能夠更輕鬆地修復 - 腳本不算小。話雖如此,我可能只是做VBS中的回聲位,所以我可以研究一下。如果你在答案中提出這個問題,我會給你+1,因爲這是你對使用體面語言的評論,這讓我有這種想法。 – paxdiablo 2013-04-05 02:48:22
因此,貴公司不允許用戶使用安裝程序安裝軟件? :-) – 2013-04-05 03:17:43