Board logo

标题: [文本处理] 求一个批量把asp文件另存为UTF8格式批处理 [打印本页]

作者: dusttosky    时间: 2023-12-27 17:38     标题: 求一个批量把asp文件另存为UTF8格式批处理

文件里面多有个.asp文件,和多个子文件夹的.asp文件.
现在需要用手工一个个文件打开,选中用记事本打开,然后再另存为utf8格式,覆盖保存.   由于有太多个文件, 请问批处理可以解决这类手工操作吗?
作者: wanghan519    时间: 2023-12-27 17:52

写了个大概,但系统自带powershell输出的utf8是带bom的,如果需要不带bom的需要调用.net对象重写
  1. gci *.txt -Recurse | %{gc $_.FullName -Encoding Oem | Out-File tmp.txt -Encoding utf8; move tmp.txt $_.FullName -Force}
复制代码

作者: 77七    时间: 2023-12-27 20:35

  1. @echo off
  2. rem 下载 http://bcn.bathome.net/tool/coder.exe
  3. cd /d "%~dp0"
  4. for /r %%i in (*.asp) do (
  5. coder -c auto utf-8 -f "%%i" >$
  6. move $ "%%i"
  7. )
  8. pause
复制代码

作者: Five66    时间: 2023-12-28 08:02

原来的asp文件编码是啥?
作者: aloha20200628    时间: 2023-12-28 18:08


如下代码存为批处理脚本,如test.cmd或test.bat,运行结果会将当前目录(包括子目录)下全部*.asp文件转为无头标BOM的utf-8编码文件。
假设*.asp是简中编码gb2312(即记事本的ANSI编码)。批处理脚本文件存于当前目录运行。
  1. @set @v=1 /*
  2. @echo off &dir /b/s/a-d *.asp|cscript /e:jscript "%~f0" &exit/b
  3. */
  4. var wsIn=WSH.stdin;
  5. var ads=new ActiveXObject('adodb.stream');
  6. var fso=new ActiveXObject('scripting.filesystemobject');
  7. while (!wsIn.atendofstream) {
  8. var F=wsIn.readline()
  9. ads.type=2; ads.mode=3; ads.charset='gb2312'; ads.open(); ads.loadfromfile(F);
  10. var all=ads.readtext(); ads.close();
  11. ads.charset='utf-8'; ads.open(); ads.writetext(all); ads.savetofile(F+'.tmp',2); ads.close();
  12. ads.type=1; ads.open(); ads.loadfromfile(F+'.tmp');
  13. ads.position=3; var all_3=ads.read(); ads.close();
  14. ads.open(); ads.write(all_3); ads.savetofile(F,2); ads.close();
  15. fso.deletefile(F+'.tmp');
  16. }
  17. WSH.quit();
复制代码





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