Board logo

标题: [文件操作] [已解决]批处理如何读取EXCEL信息给指定目录下的文件创建文件夹且按照序号归类? [打印本页]

作者: liaoguinan    时间: 2023-9-13 10:51     标题: [已解决]批处理如何读取EXCEL信息给指定目录下的文件创建文件夹且按照序号归类?

本帖最后由 liaoguinan 于 2023-9-13 20:27 编辑

如何读取EXCEL信息给指定目录下的文件创建文件夹且按照序号归类

例如第一条就是创建1.1.1.1-1-1(小明)文件夹并把图片1-3移动到这个文件夹下
第二条就是创建1.1.1.1-1-4(小明)文件夹并把图片4移动到这个文件夹下以此类推

作者: Batcher    时间: 2023-9-13 13:22

回复 1# liaoguinan


    请把Excel文件上传到网盘以便测试代码
作者: liaoguinan    时间: 2023-9-13 14:02

回复 2# Batcher


    链接:https://pan.baidu.com/s/1yks3JThkBk0Qh6ajOoalhA?pwd=3903 提取码:3903
作者: 77七    时间: 2023-9-13 17:13

把文件另存为 csv格式
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "useback tokens=1-5 delims=," %%a in ("1.csv") do (
  4. set /a n+=1
  5. set m=%%b
  6. call :1 !n!
  7. md "%%a%%b%%c%%d%%e"
  8. for /l %%l in (%%b,1,!m!) do (
  9. set k=00%%l
  10. move "!k:~-3!.jpg" "%%a%%b%%c%%d%%e"
  11. )
  12. )
  13. pause & exit
  14. :1
  15. for /f "useback skip=%~1 tokens=1-5 delims=," %%a in ("1.csv") do (
  16. set /a m=%%b-1
  17. exit /b
  18. )
  19. exit /b
复制代码

作者: liaoguinan    时间: 2023-9-13 17:27

回复 4# 77七


    for /f "useback tokens=1-5 delims=," %%a in ("C:\Users\Administrator\Desktop\1.csv") do (


大神这一段的这个路径如何修改才能脚本正常呢?貌似我这样修改会出错,就是想读取桌面这个
作者: 77七    时间: 2023-9-13 17:35

回复 5# liaoguinan


这样改没错的,是不是遗漏了一处?一共有两处需要修改。
   路径如果有中文,批处理需要保存为ansi编码格式。
作者: liaoguinan    时间: 2023-9-13 17:41

回复 6# 77七


    @echo off
setlocal enabledelayedexpansion
for /f "useback tokens=1-5 delims=," %%a in ("C:\Users\Administrator\Desktop\1.csv") do (
        set /a n+=1
        set m=%%b
        call :1 !n!
        md "%%a%%b%%c%%d%%e"
        for /l %%l in (%%b,1,!m!) do (
                set k=00%%l
                move "!k:~-3!.jpg" "%%a%%b%%c%%d%%e"
        )
)
pause & exit

        :1
        for /f "useback skip=%~1 tokens=1-5 delims=," %%a in ("C:\Users\Administrator\Desktop\1.csv") do (
                set /a m=%%b-1
                exit /b
        )
        exit /b


两处都改了,运行提示“系统找不到文件C:\Users\Administrator\Desktop\1.csv”

批处理文件和1.csv在处理的文件夹下运行是没问题的正常,但是把1.csv移到桌面就不行了
作者: Batcher    时间: 2023-9-13 17:47

回复 4# 77七


    useback改成usebackq
作者: liaoguinan    时间: 2023-9-13 17:55

回复 8# Batcher


还是一样
作者: 77七    时间: 2023-9-13 18:08

回复 9# liaoguinan


  
  1. @echo off
  2. if not exist "C:\Users\Administrator\Desktop\1.csv" (
  3. echo 找不到文件
  4. )
  5. pushd "C:\Users\Administrator\Desktop"
  6. dir /b /s /a-d 1.csv
  7. pause
复制代码
确定1.csv在desktop下吗
作者: liaoguinan    时间: 2023-9-13 18:13

回复 10# 77七


    对的
作者: 77七    时间: 2023-9-13 18:19

回复 11# liaoguinan


   10楼代码,试了吗,找得到文件吗?
作者: liaoguinan    时间: 2023-9-13 18:27

回复 12# 77七




作者: liaoguinan    时间: 2023-9-13 18:30

本帖最后由 liaoguinan 于 2023-9-13 18:33 编辑

回复 12# 77七


    还有一个问题就是最后一个文件夹如果不是一张的话好像不会把其他的放进去呢?

比如最后一个文件夹是图片号10-15页码这种的话他只会把图片号10放进去


作者: 77七    时间: 2023-9-13 18:47

本帖最后由 77七 于 2023-9-13 18:58 编辑

回复 14# liaoguinan


   
那就别修改csv文件了。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "useback tokens=1-5 delims=," %%a in ("1.csv") do (
  4. set /a n+=1
  5. set m=999
  6. call :1 !n!
  7. md "%%a%%b%%c%%d%%e"
  8. for /l %%l in (%%b,1,!m!) do (
  9. set k=00%%l
  10. if exist "!k:~-3!.jpg" (
  11. move "!k:~-3!.jpg" "%%a%%b%%c%%d%%e"
  12. )
  13. )
  14. )
  15. pause & exit
  16. :1
  17. for /f "useback skip=%~1 tokens=1-5 delims=," %%a in ("1.csv") do (
  18. set /a m=%%b-1
  19. exit /b
  20. )
  21. exit /b
复制代码

作者: 77七    时间: 2023-9-13 18:55

回复 13# liaoguinan


   估计你的桌面文件夹要求权限?比较特殊?会修改就自己再试试,隔着屏幕实在不知道咋回事了。比如管理员运行,或者先进入路径,或者用type 试下
作者: liaoguinan    时间: 2023-9-13 20:27

回复 15# 77七


    不理他了,感谢感谢
作者: liaoguinan    时间: 2023-9-13 20:34

回复 15# 77七


    找出问题在哪里了,我的EXCEL文件是打开着的,要关闭了就正常了
作者: qixiaobin0715    时间: 2023-9-14 10:57

本帖最后由 qixiaobin0715 于 2023-9-14 14:19 编辑

几经易稿,老觉得有问题,就这样吧。未测试,将批处理和1.csv文件放在图片文件夹中:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1-5 delims=," %%a in (1.csv) do (
  4.     set str=00%%b
  5.     set str=!str:~-3!
  6.     set #!str!=%%a%%b%%c%%d%%e
  7.     md "%%a%%b%%c%%d%%e"
  8. )
  9. for /f "delims=" %%i in ('dir /b /a-d ???.jpg') do (
  10.     if defined #%%~ni set Folder=!#%%~ni!
  11.     move "%%i" "!Folder!\"
  12. )
  13. pause
复制代码

作者: 77七    时间: 2023-9-14 13:12

满足14楼需要,也可以少写一个for循环。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "useback tokens=1-4* delims=," %%a in (`type "1.csv" ^& echo 1^,1000`) do (
  4. if defined n (
  5. set /a m=%%b-1
  6. md "!f!"
  7. for /l %%l in (!n!,1,!m!) do (
  8. set k=00%%l
  9. if exist "!k:~-3!.jpg" (
  10. move "!k:~-3!.jpg" "!f!"
  11. )
  12. )
  13. )
  14. set n=%%b
  15. set f=%%a%%b%%c%%d%%e
  16. )
  17. pause & exit
复制代码

作者: liaoguinan    时间: 2023-9-14 14:30

回复 20# 77七


    太感谢了




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2