[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理如何根据文件名移动文件到指定文件夹?

比如:e:\fcw有文件名为g12305,f11304,a10305,b09305文件,要求:g12305移动到12的文件夹,f11304移动到11的文件夹,a10305移动到10的文件夹,b09305移动到09的文件夹,, 并且如果文件已经存在要不提示覆盖,求批处理代码,谢谢!

应该是截取字符串然后move就可以了。可以参考孤星哥给我写的这段代码@echo off&setlocal enabledelayedexpansion
sed "s/[^0-9-]/\n/g" XFSearchList[1].txt>han.ye
(for /f %%a in (han.ye) do (
        set a=%%a
        if "!a:~0,10!"=="3303221010" if not "!a:~12!"=="" if not defined #!a:~-5! (
                set #!a:~-5!==
                md !a:~-5!
                start "" "http://10.33.100.15/HJXF/admin/XFHuiFuDetailPrint.aspx?serialnum=3303221010!a:~-5!"
                ping -n 15 127.1
                start "" f10.vbs
                ping -n 15 127.1
                move ..\回复打印单.files  .\!a:~-5!
                move ..\*.htm .\!a:~-5!
)))
ping -n 15 127.1
taskkill /im iexplore.exe /f
pause
del /q han.ye

TOP

看不懂啊,给个实例好吧,@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b /a-d') do (
   set "x=%%~a"
   set x=!x:~1,2!
   move "%%~a" f:\!x!\
   )
pause

批处理只能放在当前目录,

TOP

,@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b /a-d "f:\111*.*"') do (
   set "x=%%~a"
   set x=!x:~1,2!
   move "%%~a" f:\!x!\
   )
pause
为什么这样不行呢,

TOP

原帖由 internetfox 于 2010-12-23 13:52 发表
比如:e:\fcw有文件名为g12305,f11304,a10305,b09305文件,要求:g12305移动到12的文件夹,f11304移动到11的文件夹,a10305移动到10的文件夹,b09305移动到09的文件夹,, 并且如果文件已经存在要不提示覆盖,求批处理代码,谢 ...
  1. @echo off&setlocal enableDelayedExpansion
  2. for %%a in ("e:\fcw\*") do (
  3.     set a=%%~na
  4.     move "%%a" "f:\指定目录\!a:~1,2!"
  5. )
复制代码
以上为直接覆盖
如果不覆盖而跳过,则改成:
  1. @echo off&setlocal enableDelayedExpansion
  2. for %%a in ("e:\fcw\*") do (
  3.     set a=%%~na
  4.     echo n|move /-y "%%a" "f:\指定目录\!a:~1,2!"
  5. )
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

问题解决,谢谢

还是高手厉害,呵呵~~~~

TOP

@echo off&setlocal enableDelayedExpansion
for %%a in ("e:\fcw\*.*") do (
    set a=%%~na
    md !a:~1,2!
    move "%%a" !a:~1,2!
)

倒!孤星哥在啊。孤星哥我问下,vbs能实现鼠标左键的点击功能吗?。。。

[ 本帖最后由 yhcbird 于 2010-12-23 15:24 编辑 ]

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /b /a-d e:\fcw\*.*') do (
  3.     set v=%%~na
  4.     set v=!v:~1,2!
  5.     for /l %%b in (1 1 99) do (
  6.         set v1=0%%b
  7.         set v1=!v1:~-2!
  8.         if !v! equ !v1! (
  9.            md !v1!\
  10.            move %%~nxa !v1!\
  11.         )
  12.     )
  13. )
  14. pause
复制代码

TOP

如果我移动到映射盘符,有时会移动不过去,先要把映射盘符打开一下后才能移动,是不是要加什么命令

TOP

回复 9楼 的帖子

可以试试用start或者explorer命令打开映射盘符
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表