标题: [其他] 如何让批处理for命令中的变量为文件名而不包括路径? [打印本页]
作者: mebanna 时间: 2012-6-24 10:59 标题: 如何让批处理for命令中的变量为文件名而不包括路径?
我的目的是:遍历桌面上的所有*.doc文件,如果E:\ 目录下不存在同名文件,则将之从桌面拷贝至E:\ 目录下。
为此我写了批处理,内容如下:- FOR /R %USERPROFILE%\Desktop\ %%A in (*.doc) DO IF NOT EXIST "E:\%%A" COPY "%USERPROFILE%\Desktop\%%A" E:\
复制代码
可运行后发现,【%%A】实际值为【%USERPROFILE%\Desktop\*.doc】,而不是我所希望的【*.doc】,即,仅有文件名而不包括路径名。
请问如何实现%%A仅为文件名,而不包括路径名?
作者: mebanna 时间: 2012-6-24 11:02
补充:
我知道用CD命令修改当前路径,能实现上面的目的:- CD /D %USERPROFILE%\Desktop\
- FOR %%A in (*.doc) DO IF NOT EXIST "E:\%%A" COPY "%%A" E:\
复制代码
但我不希望修改当前路径,因为会导致其它相关联的批处理文件,出现问题。
作者: cb02356828 时间: 2012-6-24 11:18
试试dir- FOR /F %%A in ('dir /a-d /b %USERPROFILE%\Desktop\*.doc') DO IF NOT EXIST "E:\%%A" COPY "%%A" E:\
复制代码
作者: a7701 时间: 2012-6-24 11:52
看看这个符不符合你要求:- FOR /R "%USERPROFILE%\desktop\" %%A in (*.doc) DO IF NOT EXIST "E:\%%~nxA" COPY "%%A" E:\
复制代码
作者: forfiles 时间: 2012-6-24 18:43
回复 3# cb02356828
不对吧,%%A里面只包含文件名,copy的时候是找不到文件的。
作者: forfiles 时间: 2012-6-24 18:45
回复 3# cb02356828 - for /f "delims=" %%a in ('dir /a-d /b "%userprofile%\desktop\*.doc"') do if not exist "e:\%%a" copy "%%~fa" e:\
复制代码
- for /f "delims=" %%a in ('dir /a-d /b /s "%userprofile%\desktop\*.doc"') do if not exist "e:\%%~nxa" copy "%%a" e:\
复制代码
作者: cb02356828 时间: 2012-6-24 19:51
回复 6# forfiles
直接在桌面上运行
作者: forfiles 时间: 2012-6-24 20:08
回复 7# cb02356828
这个可能是楼主不希望的
作者: lky216 时间: 2012-6-25 10:48
回复 cb02356828
不对吧,%%A里面只包含文件名,copy的时候是找不到文件的。
forfiles 发表于 2012-6-24 18:43
copy的时候再用for
作者: forfiles 时间: 2012-6-25 11:17
回复 9# lky216
看不懂你在说什么
作者: lky216 时间: 2012-6-25 11:55
回复 10# forfiles
copy的时候是找不到文件的
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |