+'" "'+newName+'"')
}
作者: amwfjhh 时间: 2019-5-24 14:09
回复 1# chao111111
dir /s/b/a-d *.txt
作者: chao111111 时间: 2019-5-24 14:50
回复 2# amwfjhh
修改完执行显示语法不正确
作者: amwfjhh 时间: 2019-5-24 16:08
提取文件夹路径,pushd到文件夹下再执行你这个脚本,或者修改下js部分,将路径部分处理考虑进去
作者: amwfjhh 时间: 2019-5-24 23:09
- 1>1/* : www.bathome.net
- @echo off
- pushd %~dp0
- call :_Replace
- for /f "delims=" %%i in ('dir /s/b/ad') do (
- pushd %%~si
- call :_Replace
- popd
- )
- pause & exit /b
- :_Replace
- (
- for /f "delims=" %%a in ('dir /a-d /b *.txt^|cscript -nologo -e:jscript "%~s0"') do (
- echo,ren %%a
- ren %%a
- )
- goto :EOF
- )
- */
-
- var files = WSH.StdIn.ReadAll().split(/\r?\n/);
- for(var i in files){
- var nGoOn = /[零一二三四五六七八九十][O零一二三四五六七八九十百千]*/.test(files[i]);
- if (!nGoOn) continue
- var newName = files[i].replace(
- /[零一二三四五六七八九十][O零一二三四五六七八九十百千]*/gm,
- function(match){
- var str = match
- str = str.replace(/[一二三四五六七八九]/g,function(match){return '+'+'空一二三四五六七八九'.search(match)})
- str = str.replace(/([1-9])([十百千])/g,function(match,_1,_2){return _1 + ({'十':'*10','百':'*100','千':'*1000'}[_2])})
- str = str.replace(/^十/,'+10')
- str = str.replace(/(\*10+)0[零O](?!\+\d\1)/g,'$10')
- return (/[^0-9\+\*]/.test(str)) ? match : eval(0+str)
- }
- )
-
- WSH.Echo('"'+files[i]+'" "'+newName+'"')
- }
复制代码
作者: chao111111 时间: 2019-5-25 20:37
回复 5# amwfjhh
非常感谢,解决了 :lol :lol
作者: amwfjhh 时间: 2019-5-26 11:40
回复 6# chao111111
还好你把代码出处顶上来了,对比了下js部分代码是不对的,参考原作稍加改动过滤了下不符合条件的文件名。
作者: chao111111 时间: 2019-5-26 19:46
还有一个问题,受累给看看
当前有n个子文件夹,子文件夹下有很多内容,想把子文件夹下的内容压缩,下面的代码是把整个子文件夹压缩,我想只压缩里面的内容,压缩包以子文件夹命名
@echo off
::设置7ZIP路径
set "zip=C:\Program Files\7-Zip\7z.exe"
cd /d "%SourDir%"
for /d %%i in (*) do "%zip%" a -mx7 "%%i.zip" "%%i"
:: 确认压缩文件解压后可用,删除下面一行的echo以删除源文件夹
echo rd /s /q %%i
)
作者: amwfjhh 时间: 2019-5-26 21:57
把需要的文件名列表组装出来,按照7z的创建压缩包的命令来写就行了。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |