[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 如何用批处理截取文件名的前五位字符?

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

这些文件都没有后缀名?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 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!)
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

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



这些文件都没有后缀名的。
学习批处理

TOP

非常感谢帮助,我试了下,的确不错,谢谢!
另外有两个问题:
2>nul  和 "%%~xa"==""  如何理解?
学习批处理

TOP

5# wangze78



2>nul  屏蔽md 创建已存在目录的错误返回
"%%~xa"==""  判断是否无扩展名,主要用来排除批处理自身,也排除其他文件类型。(要求文件名中不能有点.)
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

非常受教,感谢,感谢!
学习批处理

TOP

请教版主,我按照你的方法做了如下脚本,但是向网络上拷贝的时候,拷贝不成功啊
脚本如下:
  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没问题;
为什么啊?
学习批处理

TOP

版主帮忙看看啊
学习批处理

TOP

怎么没人回话啊
学习批处理

TOP

本帖最后由 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  ???
花开不问月,不语笑红尘.

TOP

回复 6# hanyeguxing


    大神求教,您这个是判断文件无格式的,那么我有类似的是.jpg文件的应该怎么改呢?求指点。

TOP

回复 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

TOP

返回列表