Board logo

标题: [文件操作] 如何用批处理截取文件名的前五位字符? [打印本页]

作者: wangze78    时间: 2011-5-9 14:27     标题: 如何用批处理截取文件名的前五位字符?

遇到一难题,有文件需要进行归档备份,文件名均为8位的数字组成(例如:87159336、87159756、87160981、87131582);请问如何使用批处理自动实现
第一、截取文件名的前5位,建立成文件夹(如:建立文件夹87159、87160、87131)
第二、将文件名前五位与建立的文件夹名称一样的文件存放到对应的文件夹中
求高人指点,谢谢
作者: Batcher    时间: 2011-5-9 14:34

这些文件都没有后缀名?
作者: hanyeguxing    时间: 2011-5-9 14:34

本帖最后由 hanyeguxing 于 2011-5-9 14:46 编辑

例如,不包括隐藏属性:
  1. @echo off&setlocal enableDelayedExpansion
  2. 2>nul (for %%a in (*) do if "%%~xa"=="" set a=%%a&md !a:~0,5!&move "%%a" !a:~0,5!)
复制代码

作者: wangze78    时间: 2011-5-9 14:41

这些文件都没有后缀名?
Batcher 发表于 2011-5-9 14:34



这些文件都没有后缀名的。
作者: wangze78    时间: 2011-5-9 15:02

非常感谢帮助,我试了下,的确不错,谢谢!
另外有两个问题:
2>nul  和 "%%~xa"==""  如何理解?
作者: hanyeguxing    时间: 2011-5-9 15:05

5# wangze78



2>nul  屏蔽md 创建已存在目录的错误返回
"%%~xa"==""  判断是否无扩展名,主要用来排除批处理自身,也排除其他文件类型。(要求文件名中不能有点.)
作者: wangze78    时间: 2011-5-9 15:12

非常受教,感谢,感谢!
作者: wangze78    时间: 2011-5-9 17:10

请教版主,我按照你的方法做了如下脚本,但是向网络上拷贝的时候,拷贝不成功啊
脚本如下:
  1. ECHO **** READ IP
  2. for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set ip=%%i
  3. @ECHO OFF&setlocal enableDelayedExpansion   
  4. set   file=%date:~0,4%%date:~5,2%%date:~8,2%
  5. set   name=%date:~0,4%%date:~5,2%
  6. set   d=%date%
  7. set   t=%time:~0,-3%
  8. echo *****     network
  9. if exist S: net use S: /d /y > NUL:
  10. if exist T: net use T: /d /y > NUL:
  11. net use S: \\192.168.113.240\transfer_record  "manta" /user:"mantauser"
  12. IF ERRORLEVEL 1 goto errormsg
  13. net use T: \\192.168.113.240\epat_data  "manta" /user:"mantauser"
  14. IF ERRORLEVEL 1 goto errormsg
  15. if exist C:\ETT\ecelltest08 set equip=ecelltest08&goto Ecell08
  16. goto end
  17. :ecell08
  18. 2>nul (for %%a in (d:\正常代码\*.*) do if "%%~xa"==""  set a=%%a&md T:\testcell\ecelltest08\正常代码\!a:~0,5!&copy "%%a" T:\testcell\ecelltest08\正常代码\!a:~0,5!)
  19. xcopy D:\正常代码\*.* d:\backup\%name%\正常代码\ /s /y
  20. rem xcopy D:\故障码\*.* T:\testcell\ecelltest08\%name%\ /s /y
  21. IF ERRORLEVEL 1 goto end
  22. rem erase D:\正常代码\ /s /f /q
  23. xcopy D:\异常代码\*.* d:\backup\%name%\异常代码\ /s /y
  24. 2>nul (for %%a in (d:\异常代码\*.*) do if "%%~xa"=="" set a=%%a&md T:\testcell\ecelltest08\异常代码\!a:~0,5!&move "%%a" T:\testcell\ecelltest08\异常代码\!a:~0,5!)
  25. rem xcopy D:\故障码\*.* T:\testcell\ecelltest08\%name%\ /s /y
  26. IF ERRORLEVEL 1 goto end
  27. rem erase D:\正常代码\ /s /f /q
  28. echo %d% %t% ***%equip% IP:%IP%***  ecelltest08_dataupdate is finish!   >>S:\ecelltest08.log
  29. goto end
复制代码
运行结果是:文件拷贝到T:\testcell\ecelltest08 不成功,但是拷贝到d盘的backup没问题;
为什么啊?
作者: wangze78    时间: 2011-5-10 09:13

版主帮忙看看啊
作者: wangze78    时间: 2011-5-10 14:31

怎么没人回话啊
作者: missll    时间: 2011-5-11 02:39

本帖最后由 missll 于 2011-5-11 02:42 编辑

net use S: \\192.168.113.240\transfer_record  "manta" /user:"mantauser"


这命令对么。还是我理解有错误呢?
首先是建立一个管道 IPC$ 或者 ADMIN$
然后才能影射磁盘

E:\>net use \\10.0.123.100\admin$ xxxxx /u:Administrator
命令成功完成。
E:\>net use z: \\10.0.123.100\c$
命令成功完成。


IF ERRORLEVEL 1 goto errormsg   还是  IF  %ERRORLEVEL% 1 goto errormsg  ???
作者: 紫林阁主    时间: 2017-8-10 16:17

回复 6# hanyeguxing


    大神求教,您这个是判断文件无格式的,那么我有类似的是.jpg文件的应该怎么改呢?求指点。
作者: kangkang    时间: 2021-5-12 10:23

回复 6# hanyeguxing


   你好,大侠。  如下,我也复制了代码,试了下。但 就提示,请按任意键继续。然后 就没有然后了

@echo off&setlocal enableDelayedExpansion
2>nul (for %%a in (*) do if "%%~xa"=="" set a=%%a&md !a:~0,6!&move "%%a" !a:~0,6!)
pause
exit




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