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

[文本处理] [已解决]批处理怎样将剪贴板中的内容保存为文本?

[复制链接]
发表于 2025-10-8 19:32:50 | 显示全部楼层
回复 12# piazini


  
  1. @echo off
  2. set jsline=mshta "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();"

  3. for /f "delims=" %%a in ('wmic os get localdatetime ^|findstr [0-9]') do (
  4.         set now=%%a
  5. )

  6. cd /d "%~dp0"
  7. for /F "delims=" %%i in ('%jsline%') do (
  8.         md "%now:~0,8%-%now:~8,4%_%%i"
  9. )
  10. exit
复制代码
发表于 2025-10-8 20:12:20 | 显示全部楼层
本帖最后由 piazini 于 2025-10-8 20:14 编辑

回复 15# aloha20200628


    我想在 md "%%~s" 这里加点其他代码。加完执行就提示“(1, 6) Microsoft JScript 编译错误: 条件编译已关闭”

下面是我写的代码内容:

  1. 2>1/* ::
  2. @echo off &for /f "delims=" %%s in ('cscript /nologo /e:jscript "%~f0" ') do (
  3.     set daytimer_clip="%%~s"

  4.     set "md_cmd=md %daytimer_clip% "
  5.     echo [ INFO ] %md_cmd%
  6.     %md_cmd%
  7. )
  8. pause&exit/b */
  9. h=WSH.createobject('htmlfile'), s=h.parentWindow.clipboardData.getData('text'); if (s) WSH.echo(s);
  10. WSH.quit();
复制代码
发表于 2025-10-8 21:11:39 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-10-8 21:12 编辑

回复 17# piazini

须采用延迟变量,见以下代码...

  1. 2>1/* ::
  2. @echo off &for /f "delims=" %%s in ('cscript /nologo /e:jscript "%~f0" ') do (
  3.     set daytimer_clip="%%~s"
  4.     setlocal enabledelayedexpansion
  5.     set "md_cmd=md !daytimer_clip!"
  6.     echo [ INFO ] !md_cmd!
  7.     !md_cmd! 2>nul
  8.     endlocal
  9. )
  10. pause&exit/b */
  11. h=WSH.createobject('htmlfile'), s=h.parentWindow.clipboardData.getData('text'); if (s) WSH.echo(s);
  12. WSH.quit();
复制代码
亦可不采用延迟变量,见以下代码...

  1. 2>1/* ::
  2. @echo off &for /f "delims=" %%s in ('cscript /nologo /e:jscript "%~f0" ') do (
  3.     echo [ INFO ] md "%%~s"
  4.     md "%%~s" 2>nul )
  5. pause&exit/b */
  6. h=WSH.createobject('htmlfile'), s=h.parentWindow.clipboardData.getData('text'); if (s) WSH.echo(s);
  7. WSH.quit();
复制代码
发表于 2025-10-8 21:23:51 | 显示全部楼层
回复 16# 77七

谢谢,可以用
发表于 2025-10-8 21:39:57 | 显示全部楼层
回复 18# aloha20200628


    单独新建bat脚本放进去可以用,但是代码放到我现有脚本的 某一行,就还是会提示 “(1, 6) Microsoft JScript 编译错误: 条件编译已关闭”
    因为这段代码前面还有些其他代码
发表于 2025-10-8 21:45:08 | 显示全部楼层
回复 20# piazini

贴出你的源脚本代码即可一目了然了
发表于 2025-10-8 21:53:00 | 显示全部楼层
本帖最后由 piazini 于 2025-10-8 21:56 编辑

回复 21# aloha20200628

下面第19行是你的代码

  1. @echo off

  2. @REM 基础信息
  3. set file_name=来源-说明-链接.txt

  4. ::获取当前日期,格式:20190909 https://blog.51cto.com/lexsaints/2806267
  5. SET year=%date:~0,4%
  6. SET month=%date:~5,2%
  7. SET day=%date:~8,2%

  8. REM SET HH=%time:~0,2%
  9. if "%time:~0,2%" lss "10" (set HH=0%time:~1,1%) else (set HH=%time:~0,2%)
  10. SET MM=%time:~3,2%

  11. :: 年月日_时分秒
  12. SET date_timer=%year%%month%%day%-%HH%%MM%


  13. for /f "delims=" %%s in ('cscript /nologo /e:jscript "%~f0" ') do (
  14.   set clip="%%~s"
  15.   set date_timer_clip="%date_timer%_%clip%"
  16.   setlocal enabledelayedexpansion
  17.   set "md_cmd=md !date_timer_clip!"
  18.   echo [ INFO ] !md_cmd!
  19.   !md_cmd! 2>nul
  20.   endlocal
  21. )
  22. pause&exit/b */
  23. h=WSH.createobject('htmlfile'), s=h.parentWindow.clipboardData.getData('text'); if (s) WSH.echo(s);
  24. WSH.quit();

  25. (
  26. echo %clip%
  27. echo.& echo.
  28. echo 链接:
  29. echo.& echo.& echo.& echo.
  30. echo.& echo.& echo.& echo.
  31. )>%date_timer_clip%\%file_name%

复制代码
发表于 2025-10-8 22:28:28 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-10-9 10:39 编辑

回复 22# piazini

应改为如下有效的 bat+jscript 混编结构...

  1. 2>1/* ::

  2. @echo off
  3. @REM 基础信息
  4. set file_name=来源-说明-链接.txt
  5. ::获取当前日期,格式:20190909 https://blog.51cto.com/lexsaints/2806267
  6. SET year=%date:~0,4%
  7. SET month=%date:~5,2%
  8. SET day=%date:~8,2%
  9. REM SET HH=%time:~0,2%
  10. if "%time:~0,2%" lss "10" (set HH=0%time:~1,1%) else (set HH=%time:~0,2%)
  11. SET MM=%time:~3,2%
  12. :: 年月日_时分秒
  13. SET date_timer=%year%%month%%day%-%HH%%MM%

  14. for /f "delims=" %%s in ('cscript /nologo /e:jscript "%~f0" ') do (
  15.   set date_timer_clip="%date_timer%_%%~s"
  16.   setlocal enabledelayedexpansion
  17.   set "md_cmd=md !date_timer_clip!"
  18.   echo [ INFO ] !md_cmd!
  19.   !md_cmd! 2>nul
  20.   endlocal
  21. )

  22. (
  23. echo %clip%
  24. echo.& echo.
  25. echo 链接:
  26. echo.& echo.& echo.& echo.
  27. echo.& echo.& echo.& echo.
  28. )>%date_timer_clip%\%file_name%

  29. exit/b */
  30. h=WSH.createobject('htmlfile'), s=h.parentWindow.clipboardData.getData('text'); if (s) WSH.echo(s);
  31. WSH.quit();
复制代码
发表于 2025-10-8 22:56:39 | 显示全部楼层
回复 23# aloha20200628

成功了,谢谢
发表于 2025-10-8 22:57:01 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-10-9 10:42 编辑

回复 22# piazini

已订正23楼代码如下》
删除原代码笫17行,原代码第18行末尾的 %clip% 改为 %%~s
发表于 2025-10-9 00:08:45 | 显示全部楼层
用c简单的弄了个
编译后的64位程序, 将下面的保存为bat, 运行后即可还原

  1. more +3 "%~f0" >sclip.txt
  2. certutil -decode sclip.txt sclip.exe
  3. pause&exit/b
  4. -----BEGIN CERTIFICATE-----
  5. TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  6. AAAAAAAAAAAAAAAA0AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5v
  7. dCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAADu0+b/qrKIrKqyiKyqsois
  8. iNKJra+yiKyqsomsurKIrDjsjK2rsoisOOyKrauyiKxSaWNoqrKIrAAAAAAAAAAA
  9. AAAAAAAAAAAAAAAAAAAAAFBFAABkhgMArmrmaAAAAAAAAAAA8AAiAAsCDgAAAgAA
  10. AAYAAAAAAAAAEAAAABAAAAAAAEABAAAAABAAAAACAAAGAAAAAAAAAAYAAAAAAAAA
  11. AEAAAAAEAAAAAAAAAwBggQAAEAAAAAAAABAAAAAAAAAAABAAAAAAAAAQAAAAAAAA
  12. AAAAABAAAAAAAAAAAAAAAHghAAA8AAAAAAAAAAAAAAAAMAAADAAAAAAAAAAAAAAA
  13. AAAAAAAAAACQIAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  14. AAAAAAAAAAAAIAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC50ZXh0AAAA
  15. 2wEAAAAQAAAAAgAAAAQAAAAAAAAAAAAAAAAAACAAAGAucmRhdGEAAGIDAAAAIAAA
  16. AAQAAAAGAAAAAAAAAAAAAAAAAABAAABALnBkYXRhAAAMAAAAADAAAAACAAAACgAA
  17. AAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  18. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  19. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  20. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  21. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  22. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  23. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  24. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  25. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  26. AAAAAAAAAAAAAAAAAAAAAEiB7IgAAAD/FUsQAACJRCRcufX/////FeQPAABIiUQk
  27. cMdEJEgAAAAASI1UJEhIi0wkcP8VFxAAAIlEJFjHRCRABAAAAIN8JEAAdCUzyf8V
  28. LBAAAIXAdALrF7noAwAA/xXLDwAAi0QkQP/IiUQkQOvUg3wkQAB1Crj+////6VEB
  29. AAC5DQAAAP8V6w8AAEiJRCR4SIN8JHgAD4QmAQAASItMJHj/FZcPAABIiUQkaMdE
  30. JEQAAAAAi0QkREiLTCRoD7cEQYXAdAyLRCRE/8CJRCRE6+ODfCRYAHQmSMdEJCAA
  31. AAAARTPJRItEJERIi1QkaEiLTCRw/xVlDwAA6bEAAAD/FSIPAABBuAAAQAAz0kiL
  32. yP8VAQ8AAEiJRCRQSIN8JFAAdRH/FUYPAAD/FeAOAADpngAAAEjHRCQ4AAAAAEjH
  33. RCQwAAAAAMdEJCgAAEAASItEJFBIiUQkIEG5/////0yLRCRoM9KLTCRc/xXYDgAA
  34. iUQkYItEJGD/yEjHRCQgAAAAAEyNTCRIRIvASItUJFBIi0wkcP8VbQ4AAP8Vhw4A
  35. AEyLRCRQM9JIi8j/FW8OAABIi0wkeP8VfA4AAP8Vrg4AAOsN/xWmDgAAuP/////r
  36. AjPASIHEiAAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  37. SCIAAAAAAABYIgAAAAAAAGQiAAAAAAAAdCIAAAAAAACAIgAAAAAAAIwiAAAAAAAA
  38. niIAAAAAAACmIgAAAAAAALYiAAAAAAAAxCIAAAAAAADaIgAAAAAAAOwiAAAAAAAA
  39. AiMAAAAAAAAAAAAAAAAAADAjAAAAAAAAQiMAAAAAAAAgIwAAAAAAAAAAAAAAAAAA
  40. AAAAAK5q5mgAAAAADQAAAMQAAACsIAAArAYAAAAAAAAAEAAA2wEAAC50ZXh0JG1u
  41. AAAAAAAgAACQAAAALmlkYXRhJDUAAAAAkCAAABwAAAAucmRhdGEAAKwgAADEAAAA
  42. LnJkYXRhJHp6emRiZwAAAHAhAAAIAAAALnhkYXRhAAB4IQAAKAAAAC5pZGF0YSQy
  43. AAAAAKAhAAAYAAAALmlkYXRhJDMAAAAAuCEAAJAAAAAuaWRhdGEkNAAAAABIIgAA
  44. GgEAAC5pZGF0YSQ2AAAAAAAwAAAMAAAALnBkYXRhAAABBwIABwERALghAAAAAAAA
  45. AAAAABIjAAAAIAAAKCIAAAAAAAAAAAAAViMAAHAgAAAAAAAAAAAAAAAAAAAAAAAA
  46. AAAAAAAAAABIIgAAAAAAAFgiAAAAAAAAZCIAAAAAAAB0IgAAAAAAAIAiAAAAAAAA
  47. jCIAAAAAAACeIgAAAAAAAKYiAAAAAAAAtiIAAAAAAADEIgAAAAAAANoiAAAAAAAA
  48. 7CIAAAAAAAACIwAAAAAAAAAAAAAAAAAAMCMAAAAAAABCIwAAAAAAACAjAAAAAAAA
  49. AAAAAAAAAADSAkdldFN0ZEhhbmRsZQAAFAZXcml0ZUZpbGUAYAJHZXRMYXN0RXJy
  50. b3IAAEYDSGVhcEFsbG9jAEoDSGVhcEZyZWUAALQCR2V0UHJvY2Vzc0hlYXAAAHsF
  51. U2xlZXAAQANHbG9iYWxVbmxvY2sAADkDR2xvYmFsTG9jawAAAAZXaWRlQ2hhclRv
  52. TXVsdGlCeXRlAP4BR2V0Q29uc29sZU1vZGUAAAICR2V0Q29uc29sZU91dHB1dENQ
  53. AAATBldyaXRlQ29uc29sZVcAS0VSTkVMMzIuZGxsAACSAk9wZW5DbGlwYm9hcmQA
  54. TQBDbG9zZUNsaXBib2FyZAAAMQFHZXRDbGlwYm9hcmREYXRhAABVU0VSMzIuZGxs
  55. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  56. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  57. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  58. AAAAAAAAAAAAAAAAAAAAAAAQAADbEQAAcCEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  59. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  60. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  61. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  62. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  63. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  64. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  65. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  66. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  67. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  68. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  69. -----END CERTIFICATE-----

复制代码
c源码, 可自行编译

  1. #define UNICODE
  2. #include<Windows.h>
  3. #pragma comment(lib, "kernel32")
  4. #pragma comment(lib, "user32")
  5. #ifdef _MSC_VER
  6. #pragma comment(linker,"/entry:the_main /subsystem:console")
  7. #endif

  8. int the_main(){
  9. UINT code_page=GetConsoleOutputCP();
  10. HANDLE std_out=GetStdHandle(STD_OUTPUT_HANDLE);
  11. DWORD not_use=0;
  12. BOOL not_rdc=GetConsoleMode(std_out,&not_use);
  13. int i=4;
  14. while(i){
  15. if(OpenClipboard(NULL))break;
  16. Sleep(1000);
  17. i--;
  18. }
  19. if(!i)return -2;
  20. HANDLE cbd=GetClipboardData(CF_UNICODETEXT);
  21. if(cbd){
  22. LPTSTR p=(LPTSTR)GlobalLock(cbd);
  23. unsigned int c=0;
  24. while(*(p+c))c++;
  25. if(not_rdc){
  26. WriteConsoleW(std_out,p,c,NULL,NULL);
  27. }else{
  28. void *v=HeapAlloc(GetProcessHeap(),0,4096*1024);
  29. if(!v){CloseClipboard();return GetLastError();}
  30. int n=WideCharToMultiByte(code_page,0,p,-1,v,4096*1024,NULL,NULL);
  31. WriteFile(std_out,v,(DWORD)n-1,&not_use,NULL);
  32. HeapFree(GetProcessHeap(),0,v);
  33. }
  34. GlobalUnlock(cbd);
  35. CloseClipboard();
  36. }else{
  37. CloseClipboard();
  38. return -1;
  39. }
  40. return 0;
  41. }
复制代码
发表于 2025-10-9 00:38:11 | 显示全部楼层
额, 忘了使用方法了
直接执行sclip.exe就能显示粘贴版内容了
重定向到文本就是sclip.exe > aaa.txt
重定向输出到文件的编码是自适应的, 与chcp代码页一致
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:05 , Processed in 0.020912 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表