Board logo

标题: [文本处理] mshta 命令提示脚本错误如何解决 [打印本页]

作者: hentai87    时间: 2016-12-18 12:41     标题: mshta 命令提示脚本错误如何解决

  1. mshta "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();"|more >temp.txt
  2. @echo off
  3. setlocal enabledelayedexpansion
  4. set n=1
  5. (for /f %%i in ('type "temp.txt"') do (
  6. echo TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:productForm ATTR=ID:external_product_id_gio_child_!n! CONTENT=%%i
  7. set /a n+=1
  8. ))>temp2.txt
  9. clip<temp2.txt
  10. del temp*.txt
复制代码
这个bat是把剪贴板的多行文字插入到指定文本之前并且输出
比如剪贴板内容
123
你好
输出:
123hhhh
你好hhhh

测试后大部分剪贴板文本都能正常处理,但是,
比如这个
‪C:\Program Files (x86)\Common Files\Adobe\Adobe Desktop Common\ADS\Adobe Desktop Service.exe

剪贴板文本是这个就会提示脚本错误

bat是别人写的,我也不懂哪里出现了问题
我觉得很详细了,求不扣分
作者: ads350668398    时间: 2016-12-18 13:40

这个不是单纯批注里
中间有 脚本 而且发胜了错勿
作者: hentai87    时间: 2016-12-18 13:42

这个不是单纯批注里
中间有 脚本 而且发胜了错勿
ads350668398 发表于 2016-12-18 13:40



    大神. 怎么修复这个错误- -
作者: ads350668398    时间: 2016-12-18 13:50

回复 3# hentai87


    如果我知道哪错了 我一定告诉你
作者: hentai87    时间: 2016-12-18 15:04

回复 4# ads350668398
  1. winclip -p -u>temp.txt
  2. @echo off
  3. (for /f %%i in ('type "temp.txt"') do (
  4. echo TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:productForm ATTR=ID:external_product_id_gio_child_!n! CONTENT=%%i
  5. ))>temp2.txt
  6. clip<temp2.txt
  7. del temp*.txt
复制代码
这样没报错了,但是不能正确处理文本了,只能处理第一个字符,不知道为什么
比如剪贴板内容123
输出:TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:productForm ATTR=ID:external_product_id_gio_child_!n! CONTENT=1
而不是TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:productForm ATTR=ID:external_product_id_gio_child_!n! CONTENT=123
作者: pcl_test    时间: 2016-12-18 15:56

与这个路径无关,你试试复制这里的路径再运行批处理,就不会报错
C:\Program Files (x86)\Common Files\Adobe\Adobe Desktop Common\ADS\Adobe Desktop Service.exe
作者: hentai87    时间: 2016-12-18 21:22

本帖最后由 hentai87 于 2016-12-18 21:23 编辑

回复 6# pcl_test

我是从excel里复制出来的,这里复制就不会报错,怎么修改bat让他支持excel复制的文本呢
并且还有个问题,,复制的文本如果有空格就只能处理前半段
作者: pcl_test    时间: 2016-12-18 21:35

本帖最后由 pcl_test 于 2016-12-19 00:28 编辑
  1. @echo off
  2. set "str=TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:productForm ATTR=ID:external_product_id_gio_child_'+(++$n)+' CONTENT="
  3. set "load=Add-Type -AssemblyName System.Windows.Forms"
  4. powershell -sta -c "%load%;[Windows.Forms.Clipboard]::GetText() -split '[\r\n]+'|%%{'%str%'+$_}|out-file 'tmp.txt' -encoding default"
  5. pause
复制代码

作者: pcl_test    时间: 2016-12-18 21:35

本帖最后由 pcl_test 于 2016-12-19 00:28 编辑
  1. /*&cls
  2. @echo off
  3. set "netpath=%systemroot%\Microsoft.NET\Framework"
  4. for /f "delims=" %%a in ('dir /ad /b "%netpath%\v?.*"') do (
  5.     if exist "%netpath%\%%a\csc.exe" (
  6.         set "cscpath=%netpath%\%%a\csc.exe"
  7.         goto :0
  8.     )
  9. )
  10. echo;未安装.Net Framework 2.0及以上组件或相关程序丢失&pause&exit
  11. :0
  12. set "app=$getText.exe"
  13. if not exist "%app%" "%cscpath%" /out:"%app%" "%~f0"
  14. setlocal enabledelayedexpansion
  15. (for /f "delims=" %%i in ('"%app%"') do (
  16.     set /a n+=1
  17.     echo;TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:productForm ATTR=ID:external_product_id_gio_child_!n! CONTENT=%%i
  18. ))>"tmp.txt"
  19. pause&exit
  20. */
  21. using System;
  22. using System.Windows.Forms;
  23. class getText {
  24.     [STAThread]
  25.     public static void Main(string[] args) {
  26.         if(Clipboard.ContainsText())
  27.         Console.WriteLine(Clipboard.GetText());
  28.     }
  29. }
复制代码





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