我正在使用 for 回圈遍歷一系列子目錄
For /R %1 %%f IN (*.shp) do (
我需要將檔案路徑 %%f 從反斜杠轉換為正斜杠。
set old=%%f
set new=!old:\=/!
echo !new!
echo|(set /p="CALL spatial.importShapefileToLayer('%%~nf', '!new!');" & echo.) >> test.cypher
就像現在的代碼一樣,!new! text 以文字形式寫入 test.cypher
CALL spatial.importShapefileToLayer('N00E006_D100_S004_T007_L00_U0_R0', '!new!');
我需要寫入輸出的是 !new! 的值!
CALL spatial.importShapefileToLayer('N00E006_D100_S004_T007_L00_U0_R0', 'c:/test/N00E006_D100_S004_T007_L00_U0_R0.shp');
!new! 的回聲!到螢屏確實顯示了反斜杠到正斜杠的更正,所以!新!變數正在接受更正
關于如何正確使用 !new! 的想法 輸出字串中的內容將不勝感激。
編輯:setlocal EnableDelayedExpansion
包含在批處理檔案中
uj5u.com熱心網友回復:
比我更聰明的人可能會指導您了解 Windows 命令解釋器 (CMD.EXE) 如何決議腳本?有關為什么會發生這種情況的解釋,但據我所知,括號(或者可能是管道)導致事物以錯誤的順序擴展和處理,因此!new!永遠沒有機會正確擴展。
要解決此問題,請將 移動(到行首。
@echo off
setlocal enabledelayedexpansion
if exist test.cypher del test.cypher
for /r "%~1" %%A in (*.shp) do (
set old=%%A
set new=!old:\=/!
echo !new!
(echo|set /p="CALL spatial.importShapefileToLayer('%%~nA', '!new!');" & echo.) >> test.cypher
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/451388.html
標籤:批处理文件
