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

[文本处理] [已解决]批处理如何实现将指定txt文本里的前几行内容复制到剪贴板并从文本中删除

每次执行这个批处理
就把 1.txt 前48行内容复制到剪贴板 然后删除这前48行
复制到剪贴板内容格式不变 还是原来1.txt格式一样.一行一个排列
操作系统是XP
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 pcl_test 于 2016-9-6 15:31 编辑
  1. //&cls&mshta "%~f0"|find /v ""&pause&exit
  2. <script>
  3. var fso = new ActiveXObject('Scripting.Filesystemobject');
  4. var txtfile = '文本.txt';
  5. var n = 48;
  6. var s = '';
  7. try{
  8.     var f = fso.OpenTextFile(txtfile, 1);
  9.     for(i=0;i<n;i++)s+=f.ReadLine()+'\r\n';
  10.     var text = f.ReadAll();
  11.     f.Close();
  12. }catch(e){}
  13. clipboardData.setData('text', s);
  14. fso.OpenTextFile(txtfile, 2).Write(text);
  15. close();
  16. </script>
复制代码

TOP

来的晚了些
匆匆浏览了一下
给我的感觉
就是一道挺鸡肋的题
楼主的出发点无法推测
把批处理用在这种场合下
只能表示无语

很多时候
我们所解决的问题
都是在解决老问题过程中产生的新问题
等到九绕十八弯终于解决了问题链时
我们才发现
最初的问题
原本可以有另外的
更为直接而简便的答案

建议楼主从头思索问题的起源
换个思路
也许很快就能找到
比按键精灵加批处理更加有效的解决方案
天的白色影子

TOP

本帖最后由 pengyou86 于 2014-1-26 10:03 编辑
是这意思吧:要求有变动最好也能更新到顶楼
CrLf 发表于 2014-1-26 01:48


问题解决 配合我写的按键精灵脚本  可以很好的实现我所需的功能要求
还是批处理好比按键精灵速度要快些

TOP

回复 32# pengyou86


    已修改

TOP

是这意思吧:要求有变动最好也能更新到顶楼
CrLf 发表于 2014-1-26 01:48




    这个批处理剪切出来的文本内容格式和1.txt不一样了.
正常格式如下
240046584106
240046584107
240046584108
240046584109
240046584110
240046584111
240046584112
240046584113
240046584114
240046584115
240046584116
240046584117
240046584118
240046584119
240046584120
240046584121
240046584122
按照以上格式排列就可以了  麻烦高手再修改一下
不好意思这么晚打扰你

TOP

本帖最后由 CrLf 于 2014-1-26 02:39 编辑

是这意思吧:
  1. @set @n=0;//&goto bat
  2. var Form,i,str=''
  3. for(i=0;i<3;i++)str+=WSH.StdIn.ReadLine()+'\r\n'
  4. with(new ActiveXObject('Forms.Form.1').Controls.Add("Forms.TextBox.1").Object)
  5. {
  6.         MultiLine = true
  7.         Text = str
  8.         SelStart = 0
  9.         SelLength = TextLength
  10.         Copy()
  11. }
  12. WSH.Echo(WSH.StdIn.ReadAll())
  13. /*
  14. :bat
  15. @<1.txt cscript -nologo -e:jscript %0|sort /+9999|sort /+9999 /o 1.txt
  16. pause
  17. :*/
复制代码
要求有变动最好也能更新到顶楼
1

评分人数

TOP

1       14楼 ,我手误搞成38行了,抱歉.
2  [1.txt文本中去掉48行内容 然后把剪切去掉48行的内容保存到剪切 ...
PowerShell 发表于 2014-1-25 22:01



    对我的描述可能有问题 你说的对

TOP

1       14楼 ,我手误搞成38行了,抱歉.
2  [1.txt文本中去掉48行内容 然后把剪切去掉48行的内容保存到剪切板就可以了]    ----这句话如何理解?首先声明,我个人理解能力太差,但我认为你说的太渣!

这句话我理解为,把1.txt中从49行到文本文件末尾(1万多行)复制到剪贴板.但是原来楼主说的是把1---48行放入剪贴板,这是完全相反的,而且大家回的代码都是[取]1---48行,而不是[弃]!
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

麻烦高手再帮忙一下

TOP

谢谢上面各位高手测试没有一个能用的

TOP

本帖最后由 terse 于 2014-1-25 20:53 编辑

纯P 环境 WIN7
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%i in (1.txt) do set /an+=1&if !n! leq 48 echo %%i)>$
  3. clip<$
  4. >$ more +48 1.txt
  5. move $ 1.txt
  6. pause
复制代码
  1. @echo off&setlocal enabledelayedexpansion
  2. del $* 2>nul
  3. for /f "delims=" %%i in (1.txt) do set /an+=1&if !n! gtr 48 (>>$$ echo %%i)else >>$ echo %%i
  4. clip<$&move $$ 1.txt >nul&del $*
  5. pause
复制代码

TOP

这个好 mark一下 留着用.
学习了..

TOP

来个ahk:
  1. text := ""
  2. Loop, Read, 1.txt
  3.    if (A_Index>48)
  4.       text := text A_LoopReadLine "`r`n"
  5. clipboard := text
  6. return
复制代码
au3 和 ahk 处理人机交互真给力

TOP

回复 21# pengyou86


有clip命令的话可以如此:
  1. @more +48 1.txt|clip
复制代码
xp可以如此(借鉴demon的vbs方案):
  1. @set @n=0;//&goto bat
  2. var Form = new ActiveXObject('Forms.Form.1')
  3. with(Form.Controls.Add("Forms.TextBox.1").Object)
  4. {
  5. MultiLine = true
  6. Text = WScript.StdIn.ReadAll()
  7. SelStart = 0
  8. SelLength = TextLength
  9. Copy()
  10. }
  11. /*
  12. :bat
  13. @more +48 1.txt|cscript -e:jscript %0
  14. pause
  15. :*/
复制代码

TOP

返回列表