![用於重定向子程序輸出的 CMD 文件](https://rvso.com/image/1414628/%E7%94%A8%E6%96%BC%E9%87%8D%E5%AE%9A%E5%90%91%E5%AD%90%E7%A8%8B%E5%BA%8F%E8%BC%B8%E5%87%BA%E7%9A%84%20CMD%20%E6%96%87%E4%BB%B6.png)
我需要一個接收兩個參數的批次檔:一個命令(帶有一些參數的檔案名稱)和一個檔案路徑 - 用於命令執行的輸出重定向。我嘗試了一些變體call %1 > %2
,例如start %1 > %2
在檔案“q.cmd”中,透過呼叫 asq "echo test" "log.txt"
和q 'echo test' 'log.txt'
或with%1
但沒有任何效果。我之前也嘗試過。在大多數情況下,它會列印“'echo 未被識別為內部或外部命令...”或類似的內容,有時會創建空的123.txt 或使用一些服務行,但不會根據我的需要使用“test”。我該如何解決這個問題?call %1
q "echo test > log.txt"
^
>
答案1
q "echo test" "log.txt"
將提供兩個參數。
「echo test」將單獨存在,不再是「Echo」後面跟著「test」作為 Echo 的參數,而是一個名為「echo test」的命令,該命令是無效的。
您需要將參數與命令分開,實際上批次腳本並不是執行此操作的最佳方法,特別是如果您需要動態數量的參數。考慮改用 PowerShell。
話雖如此,如果您想要一些簡單的、不那麼靈活的東西,並且仍然是一個批處理文件,那麼也許可以在批處理文件中嘗試以下操作:
%2 %3 > %1
.
然後,只需先指定輸出文件,然後指定命令,最後指定要與該命令一起使用的參數。
即:q log.txt echo Test
、 或q log.txt echo "string with spaces to echo"
。
這些對我有用。 :)