Board logo

标题: [文本处理] [已解决]批处理如何提取文件部分内容为文件名? [打印本页]

作者: 511182890    时间: 2015-4-4 15:28     标题: [已解决]批处理如何提取文件部分内容为文件名?

本帖最后由 511182890 于 2015-4-17 15:11 编辑

提取文件部分内容为文件名并创建该文件,且把文件移动到该文件
例:e盘下文件
E:\ZX1011-TB1875-147主料(0.5)双向.DXF
E:\ZX1011-GB1201-147主料(0.5)双向.DXF
需要的结果:
E:\TB1875\ZX1011-TB1875-147主料(0.5)双向DXF
E:\GB1201\ZX1011-GB1201-147主料(0.5)双向.DXF
作者: tigerpower    时间: 2015-4-5 14:32

本帖最后由 tigerpower 于 2015-4-5 23:15 编辑
  1. for /f "delims=- tokens=1,2*" %i in ('dir /b') do (mkdir "%j" && move "%i-%j-%k" "%j")
复制代码

作者: bailong360    时间: 2015-4-5 14:37

回复 2# tigerpower


    代码配色有种小清新之感
作者: 511182890    时间: 2015-4-6 15:47

回复 2# tigerpower


    你好,我对批处理一点也不通,麻烦直接帮我做成批处理的所有代码好吗,那样我只要复制到。TXT我另存到。BAT直接运行就可以了,麻烦了。
作者: tigerpower    时间: 2015-4-7 17:07

  1. @echo off
  2. pushd E:\
  3. for /f "delims=- tokens=1,2*" %%i in ('dir /a-d /b') do (mkdir "%%j" && move "%%i-%%j-%%k" "%%j")
复制代码

作者: 511182890    时间: 2015-4-10 09:43

回复 5# tigerpower


    这个好像如果很多文件要移到同一个文件夹的时候,只能移动一个,而且重复运行也不会移动。
作者: 511182890    时间: 2015-4-10 09:50

回复 5# tigerpower


    只要有文件夹存在了,就不会把文件移进存在的文件中。
作者: pcl_test    时间: 2015-4-10 09:55

回复 7# 511182890
后面的改为
move /y "%%i-%%j-%%k" "%%j"
作者: 511182890    时间: 2015-4-10 12:20

回复 8# pcl_test


    /y   加了之后结果与不加一样的。
作者: tigerpower    时间: 2015-4-10 15:55

回复 4# 511182890

10楼说的对,把 && 改成 &
作者: 511182890    时间: 2015-4-11 09:36

回复 10# tigerpower


    谢谢,终于成功了。
作者: 511182890    时间: 2015-4-11 09:37

谢谢各位的解答,已经OK了
作者: pcl_test    时间: 2015-4-11 10:22

回复 12# 511182890


    问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
作者: 511182890    时间: 2015-4-13 11:32

回复 13# pcl_test


    你好,还有个问题,就是不一定是当前E盘,有可能是任意盘下的所有文件
作者: pcl_test    时间: 2015-4-13 12:17

本帖最后由 pcl_test 于 2015-4-13 15:49 编辑

回复 14# 511182890
去掉pushd E:\,把批处理跟要处理的文件放在一起运行即可,you can try
作者: tigerpower    时间: 2015-4-13 13:09

回复 14# 511182890
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%I in (65,1,90) do (
  4. cmd /c exit %%I
  5. pushd !=exitcodeascii!:\ 2>NUL && for /f "delims=- tokens=1,2*" %%i in ('dir /a-d /b') do (mkdir "%%j" & move "%%i-%%j-%%k" "%%j")
  6. )
复制代码

作者: 511182890    时间: 2015-4-13 13:23

回复 15# pcl_test


    你好,我上面的这个问题,从第一“-”开始取5位,这样行吗
比如:
E:\ZX1011-GB1201三位-147主料(0.5)双向.DXF
结果:
E:\GB1201\ZX1011-GB1201-147主料(0.5)双向.DXF

@echo off
pushd E:\
for /f "delims=- tokens=1,2*" %%i in ('dir /a-d /b') do (mkdir "%%j" & move /y "%%i-%%j-%%k" "%%j")
这个代码是处理二个“-”之间的,帮忙加于更改一下。
作者: 511182890    时间: 2015-4-13 13:24

回复 16# tigerpower


        你好,我上面的这个问题,从第一“-”开始取5位,这样行吗
比如:
E:\ZX1011-GB1201三位-147主料(0.5)双向.DXF
结果:
E:\GB1201\ZX1011-GB1201-147主料(0.5)双向.DXF

@echo off
pushd E:\
for /f "delims=- tokens=1,2*" %%i in ('dir /a-d /b') do (mkdir "%%j" & move /y "%%i-%%j-%%k" "%%j")
这个代码是处理二个“-”之间的,帮忙加于更改一下。
作者: pcl_test    时间: 2015-4-13 15:53

本帖最后由 pcl_test 于 2015-4-14 09:19 编辑

回复 17# 511182890
把批处理跟要处理的文件放在一起运行即可
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2* delims=-" %%i in ('dir /a-d /b *.dxf') do (
  4. set "n=%%j"
  5. md "!n:~,6!\" 2>nul
  6. move "%%i-%%j-%%k" "!n:~,6!\"
  7. )
  8. pause
复制代码

作者: 511182890    时间: 2015-4-14 09:00

回复 19# pcl_test


    这个代码在当前目录运行之后会自动创建一个以“~,5”命名的文件夹!
作者: pcl_test    时间: 2015-4-14 09:11

本帖最后由 pcl_test 于 2015-4-14 09:12 编辑

回复 20# 511182890
改为 dir /a-d /b *.dxf
作者: 511182890    时间: 2015-4-14 09:17

回复 21# pcl_test


   我又不知道怎么,哪一行改为dir /a-d /b *.dxf   所以还是要麻烦大神帮我写整个代码


还有:
比如:
E:\ZX1011-D1-GB1201三位-147主料(0.5)双向.DXF
结果:
E:\GB1201\ZX1011-D1-GB1201-147主料(0.5)双向.DXF
这个怎么实现,就是第二个“-”开始取6位做文件名
作者: pcl_test    时间: 2015-4-14 09:19

回复 22# 511182890
19楼已改
作者: 511182890    时间: 2015-4-14 10:16

回复 23# pcl_test


    谢谢19楼的已经OK,


新问题:
比如:
E:\ZX1011-D1-GB1201三位-147主料(0.5)双向.DXF
结果:
E:\GB1201\ZX1011-D1-GB1201-147主料(0.5)双向.DXF
这个怎么实现,就是第二个“-”开始取6位做文件名
中间多了“--D1”
作者: pcl_test    时间: 2015-4-14 10:34

回复 24# 511182890
把你的dxf所有文件名的格式都列出来,如
1-2-3.DXF
1-2-3-4.DXF
作者: 511182890    时间: 2015-4-14 10:43

回复 25# pcl_test


AD101-D1-PKD1818-140背料(2米62)倒顺.dxf
AD101-D1-PKD1822横排-140副料(1米57)双向.dxf
FT505-D3-PLD1809-142副背料(0米75)双向.dxf
BSJ101-D3-PKD1885横排-140主料(1米21)倒顺.dxf


差不多就全在这里,麻烦了
作者: 511182890    时间: 2015-4-14 10:46

AD101-D1-PKD-140背料(2米62)倒顺.dxf
AD101-D1-P0LD-140背料(2米62)倒顺.dxf
作者: 511182890    时间: 2015-4-14 10:47

AD101-D1-PKD1818-140背料(2米62)倒顺.dxf
AD101-D1-PKD1822横排-140副料(1米57)双向.dxf
FT505-D3-PLD1809-142副背料(0米75)双向.dxf
BSJ101-D3-PKD1885横排-140主料(1米21)倒顺.dxf
AD101-D1-PKD-140背料(2米62)倒顺.dxf
AD101-D1-P0LD-140背料(2米62)倒顺.dxf

好了,全部在这里了,如果PKD与P0LD没法与那有7位的一起实现也没有关系
作者: 511182890    时间: 2015-4-14 10:49

之前做的程序,按任意健转换这个直接取消好了,运行直接关掉好了。
作者: 511182890    时间: 2015-4-14 11:04

回复 19# pcl_test

问题1:
    @echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2* delims=-" %%i in ('dir /a-d /b *.dxf') do (
set "n=%%j"
md "!n:~,6!\" 2>nul
move "%%i-%%j-%%k" "!n:~,6!\"
)
pause
这个代码直接运行关掉好了,不需要按任意键退出,帮忙更改一下。

问题2:
AD101-D1-PKD1818-140背料(2米62)倒顺.dxf
AD101-D1-PKD1822横排-140副料(1米57)双向.dxf
FT505-D3-PLD1809-142副背料(0米75)双向.dxf
BSJ101-D3-PKD1885横排-140主料(1米21)倒顺.dxf
AD101-D1-PKD-140背料(2米62)倒顺.dxf
AD101-D1-P0LD-140背料(2米62)倒顺.dxf
怎么做个命令移动到
PKD1818\AD101-D1-PKD1818-140背料(2米62)倒顺.dxf
PKD1822\AD101-D1-PKD1822横排-140副料(1米57)双向.dxf
PLD1809\FT505-D3-PLD1809-142副背料(0米75)双向.dxf
PKD1885\BSJ101-D3-PKD1885横排-140主料(1米21)倒顺.dxf
PKD\AD101-D1-PKD-140背料(2米62)倒顺.dxf
P0LD\AD101-D1-P0LD-140背料(2米62)倒顺.dxf
如果3 4位文件夹不能与7位文件夹一起,关系也不是很大。


问题3:
我下面这些文件里的批处理
E:\A\1.BAT
E:\B\2.BAT
E:\C\C\3.BAT
,需要个代码,指定10:00与14:00运行一次



麻烦大神了。
作者: pcl_test    时间: 2015-4-14 12:01

本帖最后由 pcl_test 于 2015-4-14 12:12 编辑

问题1、2
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1-3* delims=-" %%a in ('dir /a-d /b *.dxf') do (
  4. if "%%d" == "" (
  5. set "n=%%b"
  6. md "!n:~,6!\" 2>nul
  7. move "%%a-%%b-%%c" "!n:~,6!\"
  8. ) else (
  9. set "n=%%c"
  10. md "!n:~,7!\" 2>nul
  11. move "%%a-%%b-%%c-%%d" "!n:~,7!\"
  12. )
  13. )
复制代码
问题3 论坛自行搜索 定时
作者: 511182890    时间: 2015-4-14 17:08

回复 31# pcl_test


    问题2:
AD101-D1-PKD1818-140背料(2米62)倒顺.dxf
AD101-D1-PKD1822横排-140副料(1米57)双向.dxf
AD101-D1-PKD-140背料(2米62)倒顺.dxf
AD101-D1-P0LD-140背料(2米62)倒顺.dxf
FT505-G1201三位-AA-142副背料(0米75)双向.dxf
FT505-G1956-AA-142副背料(0米75)双向.dxf
怎么做个命令移动到
PKD1818\AD101-D1-PKD1818-140背料(2米62)倒顺.dxf
PDK1822\AD101-D1-PKD1822横排-140副料(1米57)双向.dxf
PDK\AD101-D1-PKD-140背料(2米62)倒顺.dxf
P0LD\AD101-D1-P0LD-140背料(2米62)倒顺.dxf
G1201\FT505-G1201三位-AA-142副背料(0米75)双向.dxf
G1956\FT505-G1956-AA-142副背料(0米75)双向.dxf





之前那命令没有-AA
现在多加了-AA
作者: 511182890    时间: 2015-4-15 09:56

回复 31# pcl_test


       问题2:
AD101-D1-PKD1818-140背料(2米62)倒顺.dxf
AD101-D1-PKD1822横排-140副料(1米57)双向.dxf
AD101-D1-PKD-140背料(2米62)倒顺.dxf
AD123-D1-P0LD-140背料(2米62)倒顺.dxf
AD145-D1-PKD三位-140背料(2米62)倒顺.dxf
AD167-D1-P0LD横向-140背料(2米62)倒顺.dxf
FT505-G1201三位-AA-142副背料(0米75)双向.dxf
FT505-G1956-AA-142副背料(0米75)双向.dxf
怎么做个命令移动到
PKD1818\AD101-D1-PKD1818-140背料(2米62)倒顺.dxf
PDK1822\AD101-D1-PKD1822横排-140副料(1米57)双向.dxf
PDK\AD101-D1-PKD-140背料(2米62)倒顺.dxf
P0LD\AD101-D1-P0LD-140背料(2米62)倒顺.dxf
PKD\AD145-D1-PKD三位-140背料(2米62)倒顺.dxf
P0LD\AD167-D1-P0LD横向-140背料(2米62)倒顺.dxf
G1201\FT505-G1201三位-AA-142副背料(0米75)双向.dxf
G1956\FT505-G1956-AA-142副背料(0米75)双向.dxf
作者: 511182890    时间: 2015-4-16 13:18

本帖最后由 511182890 于 2015-4-16 13:20 编辑

回复 31# pcl_test


    大神再帮一个忙
ABD101-D1-P0KD.DSN
AD101-D1-P0D.DSN
AD101-D1-PKA1101.DSN
ACD101-D1-PKA3333无刀眼.DSN
处理为
P0KD\ABD101-D1-P0KD.DSN
P0D\AD101-D1-P0D.DSN
PKA1101\AD101-D1-PKA1101.DSN
PKA3333\ACD101-D1-PKA3333无刀眼.DSN




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