标题: [文件操作] 求助批处理将文件移动进以该文件名命名的文件夹里 [打印本页]
作者: crazy23 时间: 2022-1-15 21:56 标题: 求助批处理将文件移动进以该文件名命名的文件夹里
- @echo off
- rem 根据文件名将文件移动进以该文件名命名的文件夹里
- cd /d "%~dp0"
- for /f "delims=" %%a in ('dir /a-d/b *F*.pdf') do (
- if "%%~nxa" neq "%~nx0" (
- if not exist "%%~na\" (md "%%~na\%%~na\图1")
- echo;"%%a" --^> "%%~na\"
- move "%%a" "%%~na\%%~na\图1"
- )
- )
- pause
复制代码
我是想截取“%%~na”前20位做为文件夹名,创建文件夹(上面的是没有截取的),并且将文件复制到里面去。这个%%~na字符的截取方式,不懂,还请帮帮忙,谢谢。不要用延时变量,不懂为什么用了后小量的使用起来没有问题,数量多了后总是在后面报错。
作者: flashercs 时间: 2022-1-15 22:22
- @echo off
- rem 根据文件名将文件移动进以该文件名命名的文件夹里
- cd /d "%~dp0"
- for /f "delims=" %%a in ('dir /a-d/b *F*.pdf') do (
- if "%%~nxa" neq "%~nx0" (
- call :fun "%%a"
- )
- )
- pause
- exit /b
-
- :fun
- set "basename=%~n1"
- set "basename=%basename:~0,20%"
- set dstdir="%basename%\%basename%\图1\"
- 2>nul md %dstdir%
- echo;"%~1" --^> %dstdir%
- move "%~1" %dstdir%
复制代码
作者: crazy23 时间: 2022-1-15 22:46
本帖最后由 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\"
请按任意键继续. . .
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |