请帮忙修改bat脚本!

来源:百度知道 编辑:UC知道 时间:2024/05/31 18:42:23
如果路径中没有空格正常执行,如果存在空格则脚本执行不正确,请帮忙修改,保证路径带空格文件拖放至此BAT上能正确执行。

脚本内容如下:
@echo off
setlocal enabledelayedexpansion
(for /f "delims=" %%i in (%1) do (
set /a n+=1
set m=%%~dpi
set m=!m:~0,-1!
echo ITEM_PATH!n!=%%i
echo ITEM_OPTION!n!=""
echo WORK_PATH!n!=!m!
echo;
))>2.txt
start 2.txt

其他文件
1.txt(拖放至此BAT的文件)
F:\菜单\常用软件\girder.lnk
F:\菜单\常用软件\Setup.lnk
F:\菜单\常用软件\天策红.lnk

2.txt(生成的结果)
ITEM_PATH1=F:\菜单\常用软件\girder.lnk
ITEM_OPTION1=""
WORK_PATH1=F:\菜单\常用软件

ITEM_PATH2=F:\菜单\常用软件\Setup.lnk
ITEM_OPTION2=""
WORK_PATH2=F:\菜单\常用软件

ITEM_PATH3=F:\菜单\常用软件\策红.lnk
ITEM_OPTION3=""
WORK_PATH3=F:\菜单\常用软件
为什么??
1.错误的返回结果
目录为 F:&#

@echo off
setlocal enabledelayedexpansion
(for /f "usebackq delims=" %%i in (%1) do (
set /a n+=1
set m=%%~dpi
set m=!m:~0,-1!
echo ITEM_PATH!n!=%%i
echo ITEM_OPTION!n!=""
echo WORK_PATH!n!=!m!
echo;
))>"%~dp02.txt"
endlocal
start "" "%~dp02.txt"

刚才想了一下,bat脚本运行时,会以空格来分割各个参数,所以对获得的文件名参数应该做字符串处理,使得文件名继续作为一个整体来对待。

@echo off
setlocal enabledelayedexpansion
(for /f "delims=" %%i in ("%1") do (
set /a n+=1
set m=%%~dpi
set "m=!m:~0,-1!"
echo ITEM_PATH!n!=%%i
echo ITEM_OPTION!n!=""
echo WORK_PATH!n!=!m!
echo;
))>2.txt
start 2.txt

如果需要连带空格时的引号一并去掉的话就补充另说吧