【求助】关于批处理应用写法

bxfq 2008-11-14 02:48:09
我的需求是
源文件在C:\文档\
依次为 1.doc 2.doc 3.doc 。。。
和 C:\数据\
依次为1.excel 2.excel 3.excel。。。。。

然后我想在D盘自动建目录如 目录 1: 存放 1.doc 1.excel

我写的批处理文件为:
for /L %%i in (1,1,3) do (
rem exist!!
set filepath = %%i
IF NOT EXIST D:\filepath goto mmkk
:mmkk
MD D:\filepath
copy C:\文档\filepath .doc D:\filepath
copy C:\文档\filepath .excel D:\filepath
)
pause
但是 循环变量 i赋值给filepath 存在问题 。如何写才是正确的啊 我系统版本
Microsoft Windows XP [版本 5.1.2600]
...全文
194 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Microogle 2008-11-15
  • 打赏
  • 举报
回复
LS的doit末尾没有用goto :eof,只要调用了doit都会执行doit2,另外if语句太繁琐且不稳定,建议直接md ... 2>nul
zhm8818 2008-11-14
  • 打赏
  • 举报
回复
还是出现了,狂晕,不写了,郁闷
zhm8818 2008-11-14
  • 打赏
  • 举报
回复
允许出现手误么?[code=BatchFile]
@echo off
for /l %%i in (1,1,3) do (
if not exist d:\%% i call :doit %%i else call :doit2 %%i)
pause
exit

:doit
md d:\%1
copy c:\文档\%1.doc d:\%1
copy c:\数据\%1.excel d:\%1

:doit2
copy c:\文档\%1.doc d:\%1
copy c:\数据\%1.excel d:\%1 [/code]
zhm8818 2008-11-14
  • 打赏
  • 举报
回复
我们都只假设了没有那个目录这一种情况下的问题。其实完善一下也不难了
[code=BatchFile]
@echo off
for /l %%i in (1,1,3) do (
if not exist d:\%% call :doit %%i else call :doit2 %%i)
pause
exit

:doit
md d:\%1
copy c:\文档\%1.doc d:\%1
copy c:\数据\%1.excel d:\%1

:doit2
copy c:\文档\%1.doc d:\%1
copy c:\数据\%1.excel d:\%1
[/code]
zhm8818 2008-11-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Forever_Young 的回复:]
引用 6 楼 zhm8818 的回复:
晕倒,晚一点就被他们2个给占了 。抗议抗议


如果D盘存在1文件夹,你这个一行的不就报错了么
[/Quote]貌似这个问题同样适合你那个 嘿嘿
Forever_Young 2008-11-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhm8818 的回复:]
晕倒,晚一点就被他们2个给占了 。抗议抗议
[/Quote]

如果D盘存在1文件夹,你这个一行的不就报错了么
zhm8818 2008-11-14
  • 打赏
  • 举报
回复
晕倒,晚一点就被他们2个给占了 。抗议抗议
zhm8818 2008-11-14
  • 打赏
  • 举报
回复
我简化一下吧[code=BatchFile]for /l %%a in (1,1,3) do (mkdir d:\%%a && copy C:\文档\%%i.doc D:\%%i && copy C:\文档\%%i.excel D:\%%i)[/code]只是写在一行里了
ljc007 2008-11-14
  • 打赏
  • 举报
回复
[code=BatchFile]@echo off
for /l %%i in (1,1,3) do (
md D:\%%i 2>nul
copy C:\文档\%%i.doc D:\%%i
copy C:\文档\%%i.excel D:\%%i
)
pause[/code]
ljc007 2008-11-14
  • 打赏
  • 举报
回复
[code=BatchFile]@echo off
for /l %%i in (1,1,3) do (
if not exist D:\%%i\ (
md D:\%%i\
)
copy C:\文档\%%i.doc D:\%%i
copy C:\文档\%%i.excel D:\%%i
)
pause[/code]
Forever_Young 2008-11-14
  • 打赏
  • 举报
回复
这么写
[code=BatchFile]
@echo off
for /l %%i in (1,1,3) do (
if not exist d:\%%a call :doit %%i
)
pause
exit

:doit
md d:\%1
copy c:\文档\%1.doc d:\%1
copy c:\数据\%1.excel d:\%1
[/code]
bxfq 2008-11-14
  • 打赏
  • 举报
回复
怎么没人回复啊。大家都不用批处理吗

6,849

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧