我正在嘗試創建一個源 txt 檔案以傳遞給 javac 編譯器。在文本檔案中,我需要將子目錄中所有 .java 檔案的路徑用語音標記包圍,以防檔案夾名稱包含空格,并且路徑的任何 \ 需要為 \\ 因為 \ 被轉義。使用文本檔案,我會運行javac -d \classes @sources.txt . 這是有效的,我已經用我寫入 source.txt 的路徑對其進行了測驗。但是,我一直在嘗試讓命令列為我創建這個檔案,因為如果有更多檔案并且我必須撰寫每一個路徑,那將會很麻煩。
到目前為止,我已經嘗試運行for /f "delims=" %A in ('dir /s /B *.java') do @echo "%A" >>sources.txt. dir 命令獲取所有路徑,并且 echo 用語音標記圍繞命令,但是當我嘗試運行以下命令而不是將 \ 切換到 \\ 時,它不起作用:
for /f "delims=" %A in ('dir /s /B *.java') do @echo "%A:\=\\" >>sources.txt
這將回傳“<thepath>:\=\\”。我究竟做錯了什么?僅供參考:這直接在 cmd 行中,而不是從檔案中運行。謝謝。
uj5u.com熱心網友回復:
替換需要在環境變數上完成,而不是在回圈變數上。
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "delims=" %%A IN ('DIR /S /B /A:-D "*.java"') DO (SET "AA=%%~fA" & ECHO "!AA:\=\\!")
這也可以通過從回圈變數中洗掉 PERCENT 字符之一并使用以下命令從 cmd.exe 提示符生成:
"%ComSpec%" /V:ON /C "ECHO OFF & FOR /F "delims=" %A IN ('DIR /S /B /A:-D "*.java"') DO (SET "AA=%~fA" & ECHO "!AA:\=\\!") >>"sources.txt"
uj5u.com熱心網友回復:
由于這似乎是一個命令提示符,(指令) 問題,而不是 批處理檔案,(如其他當前答案所示),也許這將實作您的意圖:
(For /F "Delims=" %G In ('Dir "*.java" /A:-D /B /O:N /S 2^>NUL') Do @Set "}=%G" & %SystemRoot%\System32\cmd.exe /D /V /C "Echo !}:\=\\!") 1>"sources.txt"
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/348103.html
下一篇:在嵌套的for回圈中添加資料框列
