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


    不会的,确定只有一组 两位 数字...

TOP

遗憾的是都一闪而过,没能达成要求...,顺带一提,系统是win7 64位 旗舰版...


遗憾的是你一点都不会,找找自身的原因吧,要么复制粘贴有问题,要么保存bat时编码有问题

本想改改顶楼vbs代码,估计给你也白搭,算了吧

TOP

同上,估计是楼主保存成 unicode 了吧?这么多代码不至于一个都不能用

TOP

回复 1# ZeronoFreya
这样试下呢?
无64位环境测试  请自行备份数据
  1. @if(0)==(0) echo off
  2. set "Sysdir=SysWOW64"
  3. if /i "%PROCESSOR_ARCHITECTURE%" == "x86" if not defined PROCESSOR_ARCHITEW6432 set "Sysdir=System32"
  4. set cscript="%Windir%\%Sysdir%\cscript.exe" //nologo //e:javascript
  5. if "%~1" == "" (set "ph=%~dp0") else set "ph=%~1\"
  6. for /f "delims=" %%i in ('dir/b/s "%ph%*[*]*.txt"^|%cscript% "%~f0"')do (
  7.     echo,Ren %%i 2>nul
  8. )
  9. pause
  10. goto :eof
  11. @end
  12. while (!WScript.StdIn.AtEndOfStream) {
  13.     var f = WScript.StdIn.ReadLine()
  14.     var arr = f.match(/(\[(\d{2})\])/)
  15.     if (arr) WScript.echo('"' + f + '"','"' + arr[2] + '.txt"');
  16. }
复制代码

TOP

回复 19# terse


    Ren "D:\system\Desktop\test\test\dgtsts[02]fhjfcct.mp4.mp4" "02.mp4"
Ren "D:\system\Desktop\test\test\sdgdd[01]fdtgs.mp4" "01.mp4"
请按任意键继续. . .


感谢,但还是不成功。

我不懂编程,但感觉我的要求应该不是很难...没想到有这么多人帮助还是不行,这时候放弃也是不错的选择,再一次,感谢大家的帮助!!

TOP

回复 20# ZeronoFreya


    大哥,你得把 Ren 前的那个 echo 去掉,他那是为了显示出来让你看看是否正确,确认无误后去掉 echo 再进行实际的改名操作

TOP

回复 20# ZeronoFreya
上面显示表明代码可正常运行
如要统配后缀可以改下这样试
虽然楼主放弃了 还是贴出吧
  1. @if(0)==(0) echo off
  2. set "Sysdir=SysWOW64"
  3. if /i "%PROCESSOR_ARCHITECTURE%" == "x86" if not defined PROCESSOR_ARCHITEW6432 set "Sysdir=System32"
  4. set cscript="%Windir%\%Sysdir%\cscript.exe" //nologo //e:javascript
  5. if "%~1" == "" (set "ph=%~dp0") else set "ph=%~1\"
  6. for /f "delims=" %%i in ('dir/b/s "%ph%*[*]*.*"^|%cscript% "%~f0"')do Ren %%i 2>nul
  7. pause
  8. goto :eof
  9. @end
  10. while (!WScript.StdIn.AtEndOfStream) {
  11.     var f = WScript.StdIn.ReadLine()
  12.     var e =/\.[^\.]+$/.exec(f);
  13.     var arr = f.match(/(\[(\d{2})\])/)
  14.     if (arr) WScript.echo('"' + f + '"','"' + arr[2] + e + '"');
  15. }
复制代码

TOP

修改自 9 楼 apang 胸的代码:代码会短一些,但可读性其实很差
CrLf 发表于 2014-5-4 02:46



    “apang胸”
Press Any Key To Continue...

TOP

本帖最后由 PakTC 于 2014-5-7 20:06 编辑


重命名这种事情要是没有特殊控制字符干嘛要用vbs?

回复 14# CrLf
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%a in (1,1,99) do (
  4.     set sn=0%%a
  5.     set sn=!sn:~-2!
  6.     if exist *[!sn!]*.txt (
  7.         call :next *[!sn!]*.txt !sn!
  8.     )
  9. )
  10. echo 修改之后的文件列表:
  11. dir /b *.txt
  12. pause
  13. exit
  14. :next
  15. echo "%~f1"
  16. ren "%~f1" !sn!.txt
复制代码
输出结果
"C:\新建文件夹\###[01]#####.txt"
"C:\新建文件夹\复件 ###[02]#####.txt"
"C:\新建文件夹\复件 (3) ###[03]#####.txt"
"C:\新建文件夹\复件 (2) ###[04]#####.txt"
修改之后的文件列表:
01.txt
02.txt
03.txt
04.txt
1

评分人数

    • CrLf: 骚年有想法技术 + 1
Press Any Key To Continue...

TOP

回复 24# PakTC


    楼主要求有这一项:
(包含子文件夹)

TOP

回复 25# CrLf


不要做拖放了,用vbs循环访问剪切板中的信息。当出现目录的时候,对该目录进行重命名操作。
这样就只要在指定目录按ctrl+c就可以执行操作了。
Press Any Key To Continue...

TOP

本帖最后由 523066680 于 2014-5-8 12:51 编辑

回复 1# ZeronoFreya

按楼主的代码添加了一部分东西,保存为vbs即可,WIN7 64位,测试过

if wscript.arguments.count=0 then
   createobject("wscript.shell").run _
   "cmd /c cscript //nologo " &chr(34) &wscript.scriptname &chr(34) & " isme"
   wscript.quit
end if

set OUT=wscript.stdout
set INP=wscript.stdin
OUT.write "拖放需要改名的文件夹到此处:"
fold=INP.readline

'以下是楼主的代码
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each File in FSO.GetFolder(fold).Files
   Ext = FSO.GetExtensionName(File)
   If LCase(Ext) = "txt" Or LCase(Ext) = "doc" Or LCase(Ext) = "ass" Then RenFiles
Next
MsgBox "OK"

Sub RenFiles()
   Set Re = New RegExp
   Re.Pattern = "(^.*\[)(\d{2})(\].*$)"
   Re.Global = True
   File.Name = Re.Replace(File.Name,"$2") & "." & Ext
End Sub

TOP

回复 24# PakTC


    没想到放弃后会出现满意结果,不能处理子文件夹也可以了,嗯,非常满意了,非常感谢!!

TOP

回复 21# CrLf


    惭愧,如楼上所说,我不懂批处理,看到文件夹内内容未变,就果断认为失败了...惭愧!!

TOP

回复 27# 523066680


    感谢,我决定用PakTC的批处理了,放到文件夹根目录下效果很不错,再次感谢

TOP

返回列表