标题: [文件操作] 批处理或VBS替换字符串,最好加在右键菜单里。 [打印本页]
作者: twpanda 时间: 2019-9-2 20:36 标题: 批处理或VBS替换字符串,最好加在右键菜单里。
有点特殊吧,文字我一时半会我也解释不出来,发个图片,希望大神救命。
作者: flashercs 时间: 2019-9-3 00:56
本帖最后由 flashercs 于 2019-9-3 22:26 编辑
保存为a.bat,右键以管理员身份运行- @echo off
- REM 设置脚本保存路径
- set "batfile=E:\test\New folder\zuma\一键改.bat"
- for /f "tokens=1 delims=:" %%A in ('findstr /ben "####*" %0') do (
- >"%batfile%",more +%%A %0
- )
- reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\mycmd" /ve /t REG_SZ /d "一键改" /f
- reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\mycmd" /v "Icon" /t REG_EXPAND_SZ /d "\"%windir%\system32\cmd.exe\",0" /f
- reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\mycmd\command" /ve /t REG_SZ /d "\"%batfile%\" \"%%V\"" /f
- pause
- exit /b
- ################################################
- 0<1/*,:
- @echo off
- set str2search="A10"
- cd /d "%~1"
- set /p dirprefix=请输入替换字符:
- for %%A in ("..\%dirprefix%%~nx1") do set "dstdir=%%~fA"
- REM md "%dstdir%"
- dir /a-d /b|findstr /elv ".xls .xlsx .jpg .png .gif .bmp"|findstr /limc:%str2search% /f:/|Cscript.exe -nologo -e:jscript %0 "%~1" "%dstdir%" %str2search% "%dirprefix%"
-
- exit /b
- */
- var fso = WSH.CreateObject('Scripting.FileSystemObject');
- var wshell = WSH.CreateObject('WScript.Shell');
- var currdir = wshell.CurrentDirectory = WSH.Arguments(0);
- var dstdir = WSH.Arguments(1);
- var str2search = WSH.Arguments(2);
- var str2replace = WSH.Arguments(3);
- if (!fso.FolderExists(dstdir)) {
- fso.CreateFolder(dstdir);
- }
- while (!WSH.StdIn.AtEndOfStream) {
- var filename = WSH.StdIn.ReadLine();
- try {
- var tsread = fso.OpenTextFile(filename, 1, false, -2);
- var tswrite = fso.OpenTextFile(fso.BuildPath(dstdir, str2replace + filename), 2, true, -2);
- while (!tsread.AtEndOfStream) {
- tswrite.Write(tsread.ReadAll().replace(RegExp(reEscape(str2search), 'g'), function(){return str2replace;}));
- }
- } catch (e) {
-
- } finally {
- if (tsread) {
- tsread.close();
- }
- if (tswrite) {
- tswrite.close();
- }
- }
- }
-
- function reEscape(str) {
- return str.replace(/[\\^$[(){?*+|.]/g, '\\$&');
- }
复制代码
作者: Batcher 时间: 2019-9-3 20:45
下载命令行工具 sed.exe 把它和下面的代码 test.bat 放在A文件夹下
http://bcn.bathome.net/s/tool/index.html?key=sed
执行test.bat- @echo off
- set KeyStr=A11
- set /p KeyStr=输入替换字符:
- cd /d "%~dp0"
- for /f "delims=" %%i in ("%~f0\..") do (
- set "OldFolder=%%~nxi"
- )
- set NewFolder=%KeyStr%%OldFolder%
- if not exist "..\%NewFolder%" (
- md "..\%NewFolder%"
- )
- for /f "delims=" %%i in ('dir /b /a-d ^| findstr /v /r /c:"\.jpg$" /c:"\.xls$" /c:"\.xlsx$"') do (
- if "%%i" neq "%~nx0" (
- echo 正在处理文件 "%%i"
- sed "s/A10/%KeyStr%/g" "%%i" > "..\%NewFolder%\%KeyStr%%%i"
- )
- )
复制代码
作者: twpanda 时间: 2019-9-3 21:48
回复 2# flashercs
大神,我将ADD REG改成加到A文件夹右键菜单里为什么不能在A的同级目录下生成新的文件夹,而是在A文件夹下面生成新的文件夹?
reg add "HKEY_CLASSES_ROOT\Directory\shell\mycmd" /ve /t REG_SZ /d "一键改" /f
reg add "HKEY_CLASSES_ROOT\Directory\shell\mycmd" /v "Icon" /t REG_EXPAND_SZ /d "\"%windir%\system32\cmd.exe\",0" /f
reg add "HKEY_CLASSES_ROOT\Directory\shell\mycmd\command" /ve /t REG_SZ /d "\"%batfile%\" \"%%V\"" /f
作者: twpanda 时间: 2019-9-3 21:49
回复 3# Batcher
谢谢,这个好像只能改文件名,文件内的字符没有替换。
作者: Batcher 时间: 2019-9-3 22:13
回复 5# twpanda
你下载的哪个版本的sed.exe
作者: twpanda 时间: 2019-9-3 22:16
回复 6# Batcher
4.7
作者: flashercs 时间: 2019-9-3 22:27
回复 4# twpanda
改成同级目录了
作者: Batcher 时间: 2019-9-3 22:38
回复 7# twpanda
重新下载一个4.2.2放在C:\Windows\System32\下面试试
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |