Board logo

标题: [文件操作] [已解决]批理如何截取文件名建立文件夹? [打印本页]

作者: wucnu    时间: 2012-3-23 22:18     标题: [已解决]批理如何截取文件名建立文件夹?

请教大侠们....
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f %%a in ('dir /b /s /a') do (
  3.         set "temp=%%a"
  4.         set "temp=!temp:-00001.TIF=!"
  5.         md "!temp!"
  6.         move "%%a" "!temp!"
  7. )
复制代码
这个代码只能建立-00001.TIF前的文件名的文件夹,如果我想建立-的前面的文件夹名,要怎么写才好呢,也就是说-后面的不管出现是什么数字时
作者: apang    时间: 2012-3-23 22:42

文件名有几个“-”,打算从哪一个切分呢
作者: wucnu    时间: 2012-3-23 22:48

文件有上千个,如*-*.tif,想从-的第一个开始切分,那要怎么做呢
作者: apang    时间: 2012-3-23 23:22

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /b /s /a') do (
  3.     set "temp=%%a"
  4.     set "temp1=!temp:*-=!"
  5.     call set temp=%%temp:-!temp1!=%%
  6.     md "!temp!"
  7.     move "%%a" "!temp!"
  8. )
复制代码

作者: wucnu    时间: 2012-3-23 23:31

回复 4# apang


    不行呢,晕,了..
作者: apang    时间: 2012-3-24 00:13

不行是什么状况?
作者: wucnu    时间: 2012-3-24 09:56

回复 6# apang


    你的代码中的md "!temp1!"加1后可以生成文件夹,但生成的文件夹名是-后面的,我想要-前面的文件名的

如A002369255-002.tif   A0254125553-A24526295-002.tif  当然了,最多-时有3个,我想提取出A002369255,  A0254125553为文件夹名,你的那个代码提出来后是002.tif的文件名
作者: apang    时间: 2012-3-24 11:40

代码中没有md "!temp1!"
只有md "!temp!"
呵呵
作者: wucnu    时间: 2012-3-24 11:51

回复 8# apang


   是的啊,可是不加1的话,好像处理起来,没动静啊,也不会生成文件夹呢
作者: apang    时间: 2012-3-24 11:59

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /b /s /a-d *.tif') do (
  3.     set "temp=%%a"
  4.     set "temp1=!temp:*-=!"
  5.     call set temp=%%temp:-!temp1!=%%
  6.     md "!temp!" 2>nul
  7.     move "%%a" "!temp!" >nul
  8. )
复制代码
将代码保存在tif文件所在位置运行。。。
作者: wucnu    时间: 2012-3-24 23:39

回复 10# apang


    不好意思啊,我试了一下,还是不行,是代码运行了以后,还是生成不了文件夹,按你说的放在TIF文件下运行的
作者: find    时间: 2012-3-25 10:16

回复 11# wucnu


删掉@echo off,把执行结果贴出来看看。
作者: apang    时间: 2012-3-25 11:26

本帖最后由 apang 于 2012-3-25 11:31 编辑

回复 11# wucnu

奇怪,试试这样(将代码保存到tif文件所在位置):
  1. @echo off
  2. for /f "delims=" %%a in ('dir /b /s /a-d *.tif') do (
  3.     for /f "delims=-" %%b in ("%%a") do (
  4.         md "%%~nb" 2>nul
  5.         move "%%a" "%%~nb\" >nul
  6.     )
  7. )
复制代码

作者: wucnu    时间: 2012-3-25 11:30

回复 12# find


    按你说的去掉那个以后,显示出来的结果马上就关闭了,贴不上图,那我要怎么办
作者: wucnu    时间: 2012-3-25 11:33

回复 13# apang


    太感谢了,这个代码可以啊~~~THANKS
作者: apang    时间: 2012-3-25 11:35

回复 14# wucnu

代码最后加一行:pause
你也可以试试13楼,看咋样
作者: find    时间: 2012-3-25 12:47

回复 14# wucnu


以后再遇到这种问题,可以打开一个命令行窗口,去执行bat文件。
作者: find    时间: 2012-3-25 12:48

回复 15# wucnu


问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。
作者: wucnu    时间: 2012-3-25 23:53     标题: 已解决 批理如何截取文件名建立文件夹?

回复 1# wucnu
作者: wucnu    时间: 2012-3-25 23:58

回复 18# find


    对不起啊,我还不知道这呢,谢谢提醒,好像你的也还没加分呢,明天给你加啊!~~~谢谢




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