Board logo

标题: [系统相关] [已解决]批处理如何将文本内容和自己ehco的内容同时复制到剪贴板 [打印本页]

作者: 随风    时间: 2011-6-7 15:11     标题: [已解决]批处理如何将文本内容和自己ehco的内容同时复制到剪贴板

本帖最后由 随风 于 2011-6-8 00:31 编辑

批处理如何将文本内容和自己ehco的内容同时复制到剪贴板
如:a.txt 内容如下
  1. 明月如霜,好风如水,清景无限。
  2. 曲港跳鱼,圆荷泻露,寂寞无人见。
  3. 紞如三鼓,铿然一叶,黯黯梦云惊断。
  4. 夜茫茫,重寻无处,觉来小园行遍。
  5. 天涯倦客,山中归路,望断故园心眼。
  6. 燕子楼空,佳人何在,空锁楼中燕。
  7. 古今如梦,何曾梦觉,但有旧欢新怨。
  8. 异时对,黄楼夜景,。为余浩叹
复制代码
批处理中显示
echo  永遇乐
type a.txt
echo  苏轼
作者: broly    时间: 2011-6-7 16:54

不知道你的系统是什么,WIN7有一个命令  clip
  1. @echo off
  2. (echo  永遇乐
  3. type a.txt
  4. echo  苏轼) | clip
  5. pause>nul
复制代码

作者: broly    时间: 2011-6-7 18:08

没有CLIP命令的,考虑用临时文件可以实现。
不用临时文件和第三方软件的方法暂时没有想到
作者: 随风    时间: 2011-6-7 19:27

2# broly

我是win7系统,的确有个clip
奇怪我用你的代码把内容复制到剪贴板后,无法用第三方软件winclip -p来输出
难道win7的clip不是把内容复制在剪贴板?
还有,我用下面的代码,发现无法启用延迟变量,估计又是预处理的问题,不知能解决否。
  1. @echo off
  2. (echo  永遇乐
  3. for /f "delims=" %%i in (a.txt) do (
  4.    set str=%%i
  5.    setlocal enabledelayedexpansion
  6.    set str=!str: = !
  7.    echo !str!
  8.    endlocal
  9. )
  10. echo  苏轼) | clip
  11. pause
复制代码

作者: CrLf    时间: 2011-6-7 19:35

通道之前的语块,执行时类似于直接在cmd中手动输入命令再运行,此时的setlocal是没有效果的。
解决方法有二:
clip<临时文件
或者
(cmd /vn "for /l %%a in (1 1 5) do echo !random!")|clip
作者: ppmath    时间: 2011-6-7 19:37

4# 随风


winclip -c
试试
作者: 随风    时间: 2011-6-7 19:51

6# ppmath

不行,这个从文件获取
作者: broly    时间: 2011-6-7 21:04

4# 随风


如果不考虑大文本的效率问题的话,可以试试变量的嵌套
至于WINCLIP没有用过,倒不清楚什么情况

  1. @echo off
  2. (@echo off
  3. echo  永遇乐
  4. (for /f "delims=" %%i in (a.txt) do (
  5.    set str=%%i
  6.    call set str=%%str: = %%
  7.    call echo %%str%%
  8. ))
  9. echo  苏轼) | clip
  10. pause
复制代码

作者: CrLf    时间: 2011-6-7 21:06

变量延迟:
  1. @echo off
  2. (echo  永遇乐
  3. cmd /v:on /c "for /f "delims=" %%i in (a.txt) do set "str=%%i"&set "str=!str: = !"&echo !str!"
  4. echo  苏轼) | clip
  5. pause
复制代码

作者: CrLf    时间: 2011-6-7 21:07

不过没看懂那个set str=!str: = !是干嘛用的
作者: caruko    时间: 2011-6-8 00:15

set str=!str: = ! 可以省略,直接echo,!str: = !即可。
作者: 随风    时间: 2011-6-8 00:30

re 4楼,用call是可以,只是一直对call不感冒,希望能用setlocal。。。。完成,还是谢谢你提供方案。。

re 9楼
通过,只是要在do后面的set前加个@符号,否则连命令也一起复制进去了
那个替换是替换制表符为空格,论坛处理的原因。
  1. @echo off
  2. (echo  永遇乐
  3. cmd /v:on /c "for /f "delims=" %%i in (a.txt) do @set "str=%%i"&set "str=!str: = !"&echo !str!"
  4. echo  苏轼) | clip
  5. pause
复制代码

作者: Hello123World    时间: 2011-6-8 18:21

xp中没有clip 吗




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