Windows批处理脚本拖放含^字符文件夹时字符丢失,如何获取原路径?
解决BAT脚本拖放带字符文件夹时路径丢失的问题
问题根源是^在CMD中属于转义字符,拖放带^的文件夹时,系统会自动将路径中的每个^转义为^^,但直接使用%~1会被CMD解析为去掉^的内容,导致路径错误。
修改后的脚本:
@echo off setlocal enabledelayedexpansion set "target=%~1" echo !target! mkdir USB xcopy /s radiantUSB USB move "!target!" USB\ echo "FINISHED" pause endlocal
关键说明:
setlocal enabledelayedexpansion:开启延迟扩展,让变量在命令执行阶段才解析,避免预处理时转义字符被吃掉。set "target=%~1":将拖放的路径赋值给变量target,此时变量内的^是以转义后的^^形式存在的。- 使用
!target!调用变量时,延迟扩展会自动把^^还原为原始的^,从而得到正确的文件夹路径。
内容的提问来源于stack exchange,提问作者SScotti
相关产品推荐
相关产品推荐

