问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何让windows中的cmd中一个命令的输出作为另外一个命令的参数

发布网友 发布时间:2022-06-02 18:11

我来回答

1个回答

热心网友 时间:2024-10-08 13:22

【背景】
折腾:
【记录】尝试给右键打开Cygwin的mintty中加上log文件功能
期间,已知:
cmd中,运行:
E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S
可以得到:
20130906_224844
希望将此值,传递到:
E:\dev_install_root\cygwin\bin\mintty.exe –log=E:\201309.log
中,把201309替换掉,即类似于这样的含义:
E:\dev_install_root\cygwin\bin\mintty.exe –log=E:\(E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S).log
【折腾过程】
1.关于cmd中的重定向,只是>,貌似没法简单的实现这类效果。
2.然后参考了一堆的教程:
CMD命令for语句的用法详解
关于cmd命令的重定向输出
Using command redirection operators
CMD命令行高级教程精选合编
试了半天:
C:\Users\Administrator.PC-20130611GART>E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S
20130906_224844

C:\Users\Administrator.PC-20130611GART>E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S

C:\Users\Administrator.PC-20130611GART>set CUR_DATETIME=<E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S

C:\Users\Administrator.PC-20130611GART>echo %CUR_DATETIME%
+%Y%m%d_%H%M%S

C:\Users\Administrator.PC-20130611GART>set CUR_DATETIME=|E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S
20130906_230226

C:\Users\Administrator.PC-20130611GART>echo %CUR_DATETIME%
+%Y%m%d_%H%M%S

C:\Users\Administrator.PC-20130611GART>E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S | set CUR_DATETIME=
/usr/bin/date: write error

C:\Users\Administrator.PC-20130611GART>E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S > set CUR_DATETIME=
/usr/bin/date: extra operand `CUR_DATETIME='
Try `/usr/bin/date --help' for more information.

C:\Users\Administrator.PC-20130611GART>E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S
20130906_230315

C:\Users\Administrator.PC-20130611GART>E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S > set CUR_DATETIME=

C:\Users\Administrator.PC-20130611GART>set CUR_DATETIME=`E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S`

C:\Users\Administrator.PC-20130611GART>echo %CUR_DATETIME%
`E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S`

C:\Users\Administrator.PC-20130611GART>set CUR_DATETIME=<E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S

C:\Users\Administrator.PC-20130611GART>echo %CUR_DATETIME%
+%Y%m%d_%H%M%S

C:\Users\Administrator.PC-20130611GART>CUR_DATETIME=2013
'CUR_DATETIME' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Users\Administrator.PC-20130611GART>set CUR_DATETIME=2013

C:\Users\Administrator.PC-20130611GART>echo %CUR_DATETIME%
2013

C:\Users\Administrator.PC-20130611GART>E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S
20130906_231133

C:\Users\Administrator.PC-20130611GART>E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S 1>&1
重定向句柄 1 时,
无法复制此句柄。

C:\Users\Administrator.PC-20130611GART>set CUR_DATETIME=|'E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S '
文件名、目录名或卷标语法不正确。

C:\Users\Administrator.PC-20130611GART>set CUR_DATETIME=|E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S
20130906_231328

C:\Users\Administrator.PC-20130611GART>echo %CUR_DATETIME%
2013

C:\Users\Administrator.PC-20130611GART>set CUR_DATETIME=<E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%H%M%S

C:\Users\Administrator.PC-20130611GART>echo %CUR_DATETIME%
+%Y%m%d_%H%M%S

C:\Users\Administrator.PC-20130611GART>set CUR_DATETIME=|E:\dev_install_root\cygwin\bin\date.exe
Fri Sep 6 23:14:31 2013

C:\Users\Administrator.PC-20130611GART>echo %CUR_DATETIME%
+%Y%m%d_%H%M%S

C:\Users\Administrator.PC-20130611GART>set CUR_DATETIME=<E:\dev_install_root\cygwin\bin\date.exe

C:\Users\Administrator.PC-20130611GART>echo %CUR_DATETIME%
%CUR_DATETIME%

C:\Users\Administrator.PC-20130611GART>echo %CUR_DATETIME%

C:\Users\Administrator.PC-20130611GART>E:\dev_install_root\cygwin\bin\mintty.exe --log=E:\`E:\dev_install_root\cygwin\bin\date.exe +%Y%m%d_%
H%M%S`.log

C:\Users\Administrator.PC-20130611GART>

结果还是没达到目标。
3.参考:
Variables: extract part of a variable (substring)
去试试。
C:\Users\Administrator.PC-20130611GART>SET _test=123456789abcdef0 && SET _result=%_test:~0,5% && ECHO %_result%
%_result%

C:\Users\Administrator.PC-20130611GART>SET _test=123456789abcdef0 & SET _result=%_test:~0,5% & ECHO %_result%
%_test:~0,5%

C:\Users\Administrator.PC-20130611GART>SET _test=123456789abcdef0 | SET _result=%_test:~0,5% | ECHO %_result%
12345

4.再参考:
Howto: Get variable substrings in Bat/Cmd scripts
去试试:
C:\Users\Administrator.PC-20130611GART>date
当前日期: 2013/09/06 周五
输入新日期: (年月日)
C:\Users\Administrator.PC-20130611GART>time
当前时间: 23:31:07.82
输入新时间:
C:\Users\Administrator.PC-20130611GART>date /t
2013/09/06 周五

C:\Users\Administrator.PC-20130611GART>time /t
23:31

C:\Users\Administrator.PC-20130611GART>time /?
显示或设置系统时间。

TIME [/T | time]

显示当前时间设置和输入新时间的提示,请键入
不带参数的 TIME。要保留现有时间,请按 Enter。

如果命令扩展被启用,TIME 命令会支持 /T 命令行开关;该命令行开关告诉
命令只输出当前时间,但不提示输入新时间。

C:\Users\Administrator.PC-20130611GART>date --help
系统无法接受输入的日期。
输入新日期: (年月日)
C:\Users\Administrator.PC-20130611GART>date /?
显示或设置日期。

DATE [/T | date]

显示当前日期设置和输入新日期的提示,请键入
不带参数的 DATE。要保留现有日期,请按 Enter。

如果命令扩展被启用,DATE 命令会支持 /T 开关;
该开关指示命令只输出当前日期,但不提示输入新日期。

C:\Users\Administrator.PC-20130611GART>echo %date%
2013/09/06 周五

C:\Users\Administrator.PC-20130611GART>echo %date:~4,10%
/09/06 周五

C:\Users\Administrator.PC-20130611GART>echo %date:~,4%
2013

C:\Users\Administrator.PC-20130611GART>echo %date:~5,2%
09

C:\Users\Administrator.PC-20130611GART>echo %date:~8,2%
06

C:\Users\Administrator.PC-20130611GART>echo %time%
23:34:25.60

C:\Users\Administrator.PC-20130611GART>echo %time~,2%
%time~,2%

C:\Users\Administrator.PC-20130611GART>echo %time~0,2%
%time~0,2%

C:\Users\Administrator.PC-20130611GART>echo %time%
23:34:57.07

C:\Users\Administrator.PC-20130611GART>echo %time:~,2%
23

C:\Users\Administrator.PC-20130611GART>echo %time:~3,2%
35

C:\Users\Administrator.PC-20130611GART>echo %time:~6,2%
22

C:\Users\Administrator.PC-20130611GART>echo %time:~9,2%
17

C:\Users\Administrator.PC-20130611GART>set DATE=date | echo %DATE%
2013/09/06 周五

C:\Users\Administrator.PC-20130611GART>set CURDATE=date | echo %CURDATE%
%CURDATE%

C:\Users\Administrator.PC-20130611GART>set CURDATE=%date% | echo %CURDATE%
%CURDATE%

C:\Users\Administrator.PC-20130611GART>set CURDATE=%date%

C:\Users\Administrator.PC-20130611GART>echo %CURDATE%
2013/09/06 周五

C:\Users\Administrator.PC-20130611GART>set CURDATE=%date% && echo %CURDATE%
2013/09/06 周五

C:\Users\Administrator.PC-20130611GART>set CURTIME=%date% && echo %CURTIME%
%CURTIME%

C:\Users\Administrator.PC-20130611GART>set CURTIME=%time% && echo %CURTIME%
2013/09/06 周五

C:\Users\Administrator.PC-20130611GART>set CURTIME=%time% && echo %CURTIME%
23:39:42.27

C:\Users\Administrator.PC-20130611GART>set CURDATE=%date% && echo %CURDATE:~,4%%CURDATE:~5,2%%CURDATE:~8,4%
20130906 周

C:\Users\Administrator.PC-20130611GART>set CURDATE=%date% && echo %CURDATE:~,4%%CURDATE:~5,2%%CURDATE:~8,2%
20130906

C:\Users\Administrator.PC-20130611GART>set CURTIME=%date% && echo %CURTIME:~,2%%CURTIME:~3,2%%CURTIME:~6,2%%CURTIME:~9,2%

C:\Users\Administrator.PC-20130611GART>set CURTIME=%date% && echo %CURTIME:~,2%%CURTIME:~3,2%%CURTIME:~6,2%%CURTIME:~9,2%
23395517

C:\Users\Administrator.PC-20130611GART>set CURDATE=%date% && set CURTIME=%date% && echo %CURDATE:~,4%%CURDATE:~5,2%%CURDATE:~8,2%_%CURTIME:~
,2%%CURTIME:~3,2%%CURTIME:~6,2%%CURTIME:~9,2%
20130906_203/9/6

C:\Users\Administrator.PC-20130611GART>set CURTIME=%time% && echo %CURTIME:~,2%%CURTIME:~3,2%%CURTIME:~6,2%%CURTIME:~9,2%
203/9/6

C:\Users\Administrator.PC-20130611GART>set CURTIME=%time% && echo %CURTIME:~,2%%CURTIME:~3,2%%CURTIME:~6,2%%CURTIME:~9,2%
23431515

C:\Users\Administrator.PC-20130611GART>set CURDATE=%date% && set CURTIME=%time% && echo %CURDATE:~,4%%CURDATE:~5,2%%CURDATE:~8,2%_%CURTIME:~
,2%%CURTIME:~3,2%%CURTIME:~6,2%%CURTIME:~9,2%
20130906_23431811

C:\Users\Administrator.PC-20130611GART>set CURDATE=%date% && set CURTIME=%time% && echo %CURDATE:~,4%%CURDATE:~5,2%%CURDATE:~8,2%_%CURTIME:~
,2%%CURTIME:~3,2%%CURTIME:~6,2%%CURTIME:~9,2%.log
20130906_23434965.log

C:\Users\Administrator.PC-20130611GART>set CURDATE=%date% && set CURTIME=%time% && set LOGFILE=%CURDATE:~,4%%CURDATE:~5,2%%CURDATE:~8,2%_%CU
RTIME:~,2%%CURTIME:~3,2%%CURTIME:~6,2%%CURTIME:~9,2%.log && echo %LOGFILE%
%LOGFILE%

C:\Users\Administrator.PC-20130611GART>set CURDATE=%date% && set CURTIME=%time% && set LOGFILE=%CURDATE:~,4%%CURDATE:~5,2%%CURDATE:~8,2%_%CU
RTIME:~,2%%CURTIME:~3,2%%CURTIME:~6,2%%CURTIME:~9,2%.log && echo %LOGFILE%
20130906_23440529.log

C:\Users\Administrator.PC-20130611GART>

5.然后再去最后测试,能否真正用于mintty的log参数:
C:\Users\Administrator.PC-20130611GART>set CURDATE=%date% && set CURTIME=%time% && set CURLOGFILE=%CURDATE:~,4%%CURDATE:~5,2%%CURDATE:~8,2%_
%CURTIME:~,2%%CURTIME:~3,2%%CURTIME:~6,2%%CURTIME:~9,2%.log && E:\dev_install_root\cygwin\bin\mintty.exe --log=E:\%CURLOGFILE%

虽然打开mintty了,也创建log文件了,可惜只是:
%CURLOGFILE%
而不是预想的日期的值。
但是,试了第二次,结果就可以了:

即,用:
C:\Users\Administrator.PC-20130611GART>set CURDATE=%date% && set CURTIME=%time% && set CURLOGFILE=%CURDATE:~,4%%CURDATE:~5,2%%CURDATE:~8,2%_%CURTIME:~,2%%CURTIME:~3,2%%CURTIME:~6,2%%CURTIME:~9,2%.log && E:\dev_install_root\cygwin\bin\mintty.exe --log=E:\%CURLOGFILE%

的cmd命令,打开了mintty,
且的确生成了对应的log文件:
E:\20130906_23454766.log
效果还是不错的。
6.不知道,此处是否是有其他问题。搞得第二次才可以。
然后,把此部分的设置,尝试去添加到原先的注册表中。
之前是这样的,只有-e参数:

现在去添加变为:
set DATENOW=%date% && set TIMENOW=%time% && set CURLOG=%DATENOW:~,4%%DATENOW:~5,2%%DATENOW:~8,2%_%TIMENOW:~,2%%TIMENOW:~3,2%%TIMENOW:~6,2%%TIMENOW:~9,2%.log && E:\dev_install_root\cygwin\bin\mintty.exe --log=E:\%CURLOG% -e E:\dev_install_root\cygwin\bin\bash -c "/bin/xhere /bin/bash.exe '%L'"

即:

然后,再去测试一下:

效果是:
找不到应用程序

难道是command的值,太长了?(刚才在regedit中,都无法显示全。。。)追问这个我看过了的 谢谢

命令提示符怎么用

一、打开命令提示符 在Windows系统中,可以通过按下Win键+R,在运行窗口中输入“cmd”命令,然后按下Enter键来打开命令提示符。另外,也可以在开始菜单中搜索“命令提示符”或“cmd”来找到并打开它。二、基本命令 1. 文件操作:使用“dir”命令可以列出当前目录中的文件和文件夹,使用“cd”命令可以切...

在cmd中 如何将屏幕上的显示 通过什么命令输出到指定的文本文件中 谢谢...

1、点击电脑桌面上的开始图标,点击菜单上的运行。2、在输入框输入CMD,然后点击界面下方的确定。3、输入测试命令:ping baidu.com -t,点击回车键即可看到结果。4、再次输入命令:ping baidu.com -t &gt; test.txt,然后点击回车键。5、然后在文件夹,根据保存路径,找到自动保存的文件。6、打开即可看到...

Windows批处理CMD如何截取一个字符串中指定字符后面的字符串?_百度知 ...

1、首先打开cmd窗口,然后输入格式 :%PATH:str1=str2% 将字符串的变量%PATH%中的str1替换为str2。2、在尝试将www.baidu.com中的.更改为。3、字符串截取格式:%a:~[m[,n]]% 方括号表示可选,%为变量标识符,a为变量名,不可少,冒号用于分隔变量名和说明部分,符号~可以简单理解为“偏移...

为什么我的CPU使用率经常在100%~~

在注册表中的情况最复杂,通过regedit命令打开注册表编辑器,在点击至:“HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRun”目录下,查看键值中有没有自己不熟悉的自动启动文件,扩展名为EXE,这里切记:有的“木马”程序生成的文件很像系统自身文件,想通过伪装蒙混过关,如“Acid Battery v1.0木马”,它将注册表“...

CPU占用率100%是怎么回事?

所有的流输入/输出操作例如使用Windows Media Player听音乐将有可能是音乐失真成因: 当你在资源管理器里面右键点击一个文件或目录的时候,当快捷菜单显示的时候,CPU占用率将增加到100%,当你关闭快捷菜单的时候才返回正常水平。 解决方法: 方法一:关闭“为菜单和工具提示使用过渡效果” 1、点击“开始”--“控制面板”...

如何制作一个批处理打开多个cmd窗口分别执行命令

1、命令使用start命令打开 cmd窗口,具体参数意义见结尾附录 2、/K :是让命令执行完仍然显示cmd窗口。3、每个CMD 窗口要运行的命令,用“”标记起来,分行用 &amp;&amp; 二、上面的例子效果是,同时打开2个CMD窗口,分别ping两个IP。三、附start命令的参数说明:D:\&gt;start /?启动一个单独的窗口运行指定的...

CMD下如何修改注册表?

一、CMDcmd 是windows2000中的一个小得如鸽子蛋一样的程序,是一个所谓命令行控制台。有两条进入该程序的通道:第一,鼠标点击"开始-&gt;运行",在出现的编辑框中键入"cmd",然后点击"确定";第二,在启动windows2000的时候,按F8进入启动选择菜单,移动光条或键入数字至安全模式的命令行状态。出现的窗口是一个在win9x...

cmd中,如何给一个输入值定为变量,并如何调出变量?

你上面的语法是不正确的,必须严格按照CMD的语法来写语句,该有空格的地方一定要有空格!定义接受输入的变量: SET /P cho=请输入密码: 调用变量是用两个“%”界定就可以直接引用:echo 您输入的密码是%cho Windows 命令提示符(cmd.exe)是 Windows NT 下的一个用于运行 Windows 控制面板程序或...

有什么cmd命令能让电脑点击一个文件就会打开一个软件?

新建一个bat文件,比如qq的执行文件路径,然后把你的软件执行文件路径写进去(C盘的路径较长,路径要加双引号(要用英文格式输入,不能在拼音输入法的位置输入),双击即可打开

想让命令行(cmd.exe)执行一个命令怎么办

接下来我们看看taskkill这个命令,这个命令的作用是结束一个进程.后面的参数会随需而变, 参数就是想要结束的进程进程名, 可以简单的将进程的名字写在批处理里面, 象这样:taskkill /im winword.exe 这样当我们执行这个批处理的时候,就可以结束微软的word字处理程序. 但是这样缺少灵活性, 结束不同进程需要...

windows7cmd命令 windows cmd 命令大全 windows 命令行 windows命令提示符窗口 win10怎么运行cmd命令 win10cmd重启命令 win10cmd命令大全 window命令 window重启命令
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
金鱼是如何培育的 绝版七匹狼长什么样 苹果4s恢复之后开机整体都是灰色了怎么办 苹果4s看小说时屏幕呈灰色是无意中按了什么键 新化到遵义的经过列车什么时候到 为什么iPhone4s向下滑搜索iPhone屏幕会变成灰色 是正常的吗 你好 苹果4swifi打不开显示灰色怎么修啊?? 快干胶水配方及特点介绍杂用品 苹果4Sv if i 变成灰色不能用了怎么办? iphone4s屏幕为什么变成灰色? 怎样查是不是黑户 梁静茹5个字的歌有那些 5个字的歌有哪些?要是男的唱的 运行BAT出错!提示很奇怪 目前的品牌内衣排行榜有谁知道啊,那个牌子最红? 凯诗芬内衣是几线品牌 ...运行到手机上的不是APP,而是一个包名是怎么回事 我网购的尼康L120相机外包装上没有厂商名称和厂址,没有电话。是否有问题... 请问一下,内衣品牌中大牌有哪些?爱慕内衣跟古今算不算? 相机上标记的明明是伊克萨斯115Hs但包装和网上的名字却是115呢?_百度... 有谁知道艾慕芬内衣怎么样啊,跟别的品牌内衣相比如何? 手游 辐射避难所 安卓版如何提高帧数? 怎么启动一个不知道包名和类名的Android APK 辐射避难所攻略 辐射避难所攻略 辐射避难所怎么调时间 调时间作弊方法分享 辐射避难所手机上最新的版本是多少,本人在玩1.9 怎么得到手机系统上面安装的包名和类名 怎样关闭通过包名与类名打开的APP 辐射避难所修改器怎么使用 撤销权行使的行使条件 小米手机今天大促销有什么优惠? 三星2017手机能插耳机吗 三星手机可以使用小米耳机吗 大话西游3,多久时间不上线才符合老友回归?都有什么奖励? 为什么三星不能用别的手机的耳机 撤销权行使的规定有哪些 小米手机可以用三星的耳机吗 债权人撤销权的行使条件有哪些 小米商城6.18大促销,米note会降价吗?现价是2299。 2k21卡在全新要素那里Switch 冒险岛35冰雷法师的快速练级路线! 债权人行使撤销权的条件有哪些? 谁有能用的 大唐无双序列号?要最新的 2k21怎么恶意犯规 校园平安夜活动标题 读平安夜读后感主副标题 求一部有关圣诞节(平安夜)的电影 一篇100字左右的英语作文,标题是,,圣诞节的故事,,求答案,谢谢 脱兔要怎么卸载?