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

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

[复制链接]
发表于 2011-6-7 15:11:33 | 显示全部楼层 |阅读模式
本帖最后由 随风 于 2011-6-8 00:31 编辑

批处理如何将文本内容和自己ehco的内容同时复制到剪贴板
如:a.txt 内容如下

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

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-6-7 16:54:01 | 显示全部楼层
不知道你的系统是什么,WIN7有一个命令  clip
  1. @echo off
  2. (echo  永遇乐
  3. type a.txt
  4. echo  苏轼) | clip
  5. pause>nul
复制代码
发表于 2011-6-7 18:08:53 | 显示全部楼层
没有CLIP命令的,考虑用临时文件可以实现。
不用临时文件和第三方软件的方法暂时没有想到
 楼主| 发表于 2011-6-7 19:27:42 | 显示全部楼层
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
复制代码
发表于 2011-6-7 19:35:06 | 显示全部楼层
通道之前的语块,执行时类似于直接在cmd中手动输入命令再运行,此时的setlocal是没有效果的。
解决方法有二:
clip<临时文件
或者
(cmd /vn "for /l %%a in (1 1 5) do echo !random!")|clip
发表于 2011-6-7 19:37:35 | 显示全部楼层
4# 随风


winclip -c
试试
 楼主| 发表于 2011-6-7 19:51:56 | 显示全部楼层
6# ppmath

不行,这个从文件获取
发表于 2011-6-7 21:04:14 | 显示全部楼层
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
复制代码

评分

参与人数 1技术 +1 收起 理由
随风 + 1 感谢

查看全部评分

发表于 2011-6-7 21:06:21 | 显示全部楼层
变量延迟:
  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
复制代码

评分

参与人数 1技术 +1 收起 理由
随风 + 1 感谢

查看全部评分

发表于 2011-6-7 21:07:46 | 显示全部楼层
不过没看懂那个set str=!str: = !是干嘛用的
发表于 2011-6-8 00:15:19 | 显示全部楼层
set str=!str: = ! 可以省略,直接echo,!str: = !即可。
 楼主| 发表于 2011-6-8 00:30:14 | 显示全部楼层
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
复制代码
发表于 2011-6-8 18:21:17 | 显示全部楼层
xp中没有clip 吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 14:12 , Processed in 0.022379 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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