找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 15905|回复: 2

[文件操作] 求助批处理将文件移动进以该文件名命名的文件夹里

[复制链接]
发表于 2022-1-15 21:56:10 | 显示全部楼层 |阅读模式
  1. @echo off
  2. rem 根据文件名将文件移动进以该文件名命名的文件夹里
  3. cd /d "%~dp0"
  4. for /f "delims=" %%a in ('dir /a-d/b *F*.pdf') do (
  5. if "%%~nxa" neq "%~nx0" (
  6. if not exist "%%~na" (md "%%~na\%%~na\图1")
  7. echo;"%%a" --^> "%%~na"
  8. move "%%a" "%%~na\%%~na\图1"
  9. )
  10. )
  11. pause
复制代码
我是想截取“%%~na”前20位做为文件夹名,创建文件夹(上面的是没有截取的),并且将文件复制到里面去。这个%%~na字符的截取方式,不懂,还请帮帮忙,谢谢。不要用延时变量,不懂为什么用了后小量的使用起来没有问题,数量多了后总是在后面报错。
发表于 2022-1-15 22:22:18 | 显示全部楼层
  1. @echo off
  2. rem 根据文件名将文件移动进以该文件名命名的文件夹里
  3. cd /d "%~dp0"
  4. for /f "delims=" %%a in ('dir /a-d/b *F*.pdf') do (
  5. if "%%~nxa" neq "%~nx0" (
  6.   call :fun "%%a"
  7. )
  8. )
  9. pause
  10. exit /b

  11. :fun
  12. set "basename=%~n1"
  13. set "basename=%basename:~0,20%"
  14. set dstdir="%basename%\%basename%\图1"
  15. 2>nul md %dstdir%
  16. echo;"%~1" --^> %dstdir%
  17. move "%~1" %dstdir%
复制代码
 楼主| 发表于 2022-1-15 22:46:21 | 显示全部楼层
本帖最后由 crazy23 于 2022-1-15 22:47 编辑

谢谢……说老实话,没看明白,突然感觉延时变量还是蛮好的(只能说自己太笨)。可是不知道为什么少量的正常,一旦多了就不对,我是这么弄的。
我试着用了延时变量如下:
@echo off
rem 截取/提取文件名前几位字符作为名称来创建文件夹,并把文件剪切/移动到该新建的文件夹里
cd /d "%~dp0"
for /f "delims=" %%a in ('dir /a-d/b *F*.pdf') do (
    if /i "%%~nxa" neq "%~nx0" (
        setlocal enabledelayedexpansion        
        set "fname=%%~na"
        set "f=%%a"
        if not exist "!fname:~-%n%!\" md "!fname:~,19!F00010001\!fname:~,19!F00010001\图1"
        move "!f:~,19!F00010001#分户图.pdf" "!fname:~,19!F00010001\!fname:~,19!F00010001\图1\"
        echo;"!f!" --^> "!fname:~,19!F00010001\!fname:~,19!F00010001\图1\"
        endlocal
    )
)
echo;%#%
pause
exit


其中跑到最后就报此类问题:
前面还有好多都是正常的,"450305003004JC01488F00010001#分户图.pdf" --> "450305003004JC01488F00010001\4503
05003004JC01488F00010001\图1\"
移动了         1 个文件。
"450305003004JC01489F00010001#分户图.pdf" --> "450305003004JC01489F00010001\4503
05003004JC01489F00010001\图1\"
子目录或文件 450305003004JC01462F00010001\450305003004JC01462F00010001\图1 已经
存在。
系统找不到指定的文件。
"450305003004JC01462W00000000#宗地图.pdf" --> "450305003004JC01462F00010001\4503
05003004JC01462F00010001\图1\"

请按任意键继续. . .
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 15:18 , Processed in 0.017239 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表