Board logo

标题: [文件操作] 批处理建立文件夹,移动到对应目录下,怎么不成功呀? [打印本页]

作者: sblisb    时间: 2015-4-8 20:42     标题: 批处理建立文件夹,移动到对应目录下,怎么不成功呀?

做了个bat,功能为建目录,移动文件夹,比如
将文件名为“全部203212064”的文件移到“\龙继乡\上坑"目录下
目录名根据“全部203212064”红色部份查code.txt
作者: sblisb    时间: 2015-4-8 20:44

code.txt内容如下
DISTRICT_NAME        DISTRICT_CODE
龙继乡        350783203
上坑        350783203212
代码如下
@echo off&setlocal enabledelayedexpansion
for /f "delims=U" %%a in ('cmd /u /c echo 唉') do set "tab=%%a"
(for /f "skip=1 tokens=1* delims=%tab%" %%a in (code.txt) do (
    if %%b leq 999999999 (
        set "dst=%%a"
    ) else (
        set "str=%%b"
        set "str=!str:~-6!"
        if exist "全部!str!*.xls" (
             md "!dst!\%%a\"
             move "全部!str!*.*" "!dst!\%%a\"
        )
    )
))>nul 2>nul
哪位帮一下,下载附件指点一下,谢了
作者: Batcher    时间: 2015-4-8 21:59

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "skip=1 tokens=1*" %%a in ('type code.txt') do (
  4.     if %%b leq 999999999 (
  5.         set "dst=%%a"
  6.     ) else (
  7.         set "str=%%b"
  8.         set "str=!str:~-6!"
  9.         if exist "全部!str!*.xls" (
  10.             md "!dst!\%%a\"
  11.             move /y "全部!str!*.*" "!dst!\%%a\"
  12.         )
  13.     )
  14. )
复制代码

作者: sblisb    时间: 2015-4-8 22:12

Batcher 发表于 2015-4-8 21:59

谢谢版主,但是有个文件名中带英文的不识别,比如“全部103x21020”
作者: Batcher    时间: 2015-4-8 22:56

回复 4# sblisb


    传上来我试试
作者: sblisb    时间: 2015-4-8 23:35

回复  sblisb


    传上来我试试
Batcher 发表于 2015-4-8 22:56

作者: Batcher    时间: 2015-4-9 09:43

回复 6# sblisb


    字母的出现会导致 if %%b leq 999999999 判断失败,因为字母是大于数字的,你先想好逻辑上怎么处理吧,为什么要做这个判断呢?
作者: sblisb    时间: 2015-4-9 11:58

回复  sblisb


    字母的出现会导致 if %%b leq 999999999 判断失败,因为字母是大于数字的,你先想好 ...
Batcher 发表于 2015-4-9 09:43


因为原来的编码就是这样,第四位可能有字母,现在怎么改?再循环一次?
作者: pcl_test    时间: 2015-4-9 12:24

把完整的code.txt打包发上来,文件过大可上传网盘发分享链接
作者: sblisb    时间: 2015-4-9 12:30

本帖最后由 sblisb 于 2015-4-9 12:34 编辑
把完整的code.txt打包发上来,文件过大可上传网盘发分享链接
pcl_test 发表于 2015-4-9 12:24

看了下文件,只有第一位和第四位会出现英文x,没有其它字母
作者: sblisb    时间: 2015-4-9 12:37

编码表中为,"某某  350783x02x34"只有这两位有英文x
作者: pcl_test    时间: 2015-4-9 12:46

回复 11# sblisb
那可以把判断条件改为
set "n=%%b"
if "!n:~9,1!" == "" () else ()
作者: Batcher    时间: 2015-4-9 13:08

回复 8# sblisb
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "skip=1 tokens=1*" %%a in ('type code.txt') do (
  4.     set "dst=%%a"
  5.     set "str=%%b"
  6.     set "str=!str:~-6!"
  7.     if exist "全部!str!*.xls" (
  8.         md "!dst!\%%a\"
  9.         move /y "全部!str!*.*" "!dst!\%%a\"
  10.     )
  11. )
复制代码

作者: sblisb    时间: 2015-4-9 13:41

回复  sblisb
Batcher 发表于 2015-4-9 13:08

上一级目录错误
作者: Batcher    时间: 2015-4-9 13:49

回复 14# sblisb
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "skip=1 tokens=1*" %%a in ('type code.txt') do (
  4.     set "n=%%b"
  5.     if "!n:~9,1!" == "" (
  6.         set "dst=%%a"
  7.     ) else (
  8.         set "str=%%b"
  9.         set "str=!str:~-6!"
  10.         if exist "全部!str!*.xls" (
  11.             md "!dst!\%%a\"
  12.             move /y "全部!str!*.*" "!dst!\%%a\"
  13.         )
  14.     )
  15. )
复制代码





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