已经有问题解决我的问题(我可以让&&在Powershell中工作吗?),但有一点不同.我需要两个命令的OUTPUT.看,如果我只是运行:
(command1 -arg1 -arg2) -and (command2 -arg1)
Run Code Online (Sandbox Code Playgroud)
我不会看到任何输出,而是stderr消息.正如所料,只需输入:
command1 -arg1 -arg2 -and command2 -arg1
Run Code Online (Sandbox Code Playgroud)
给出语法错误.
我有一种情况,我在我的shell脚本中有一个命令,必须在同一个脚本中执行退出命令后执行(我知道!!这听起来很疯狂!)
我想找到类似的解决方案
#!/bin/sh
ls -l ~/.
exit $?
touch ~/abc.txt
Run Code Online (Sandbox Code Playgroud)
这里我希望命令touch ~/abc.txt在exit $?运行后执行,命令touch ~/abc.txt可以是任何命令.
约束: 1)我无法修改exit $?上述脚本的一部分.2)该命令必须仅在exit $?命令后执行.
我不确定是否有解决方案,但任何帮助表示赞赏.
我在Windows 7旗舰版的FOR-command中执行其他命令时遇到问题.for-command是批处理文件的一部分,应该解析另一个命令的输出.
通常这个:
for /f %%a IN ('tasklist') DO echo %%a
Run Code Online (Sandbox Code Playgroud)
应执行命令"Tasklist"并通过echo输出其结果.但我总是得到"命令未找到".
我试图在forloop之外执行命令,它可以工作.我也尝试在for中执行大量外部命令,但每个命令都说"命令未找到".
我也试过这篇文章的例子:
我确定
但这台电脑没有任何作用.相同的命令可以在另一台运行Windows 7终极版的PC上运行.
那么有没有人会在没有找到所有命令的电脑上出错?
这是我使用命令"ls"尝试时我的控制台输出的示例.ls.exe是gun4win项目中的可执行文件,它位于运行批处理文件的同一文件夹中.窗口是德语,所以错误输出也是德语.
C:\测试> test_for.bat
C:\test>rem --- test a command stand-alone ---
C:\test>ls
ls.exe test_for.bat
C:\test>rem --- test same command in a FOR-Loop ---
C:\test>for /F "delims=" %a in ('ls') do echo FOR-OUTPUT: %a
Der Befehl "ls" ist entweder falsch geschrieben oder konnte nicht gefunden
werden.
Run Code Online (Sandbox Code Playgroud)
最终编辑:
问题是系统envoirement变量的错误值ComSpec.
我改变了ComSpec,Erweiterte Systemeigenschaften->Erweitert->Umgebungsvariaben->Systemvariablen" to "C:\Windows\system32\cmd.exe问题解决了.
感谢@foxidrive和@jeb
我有一些通过Runtime.getRuntime.exec(String)运行命令的代码,它可以在 Windows 上运行。当我将代码移至 Linux 时,它崩溃了,修复它的唯一方法是切换到exec(String[])版本。如果我这样保留,代码在 Windows 和 Linux 上的工作方式是否相同,或者我应该在 Windows 上使用 exec(String) 而在 Linux 上使用 exec(String[]) ?
我已经开始研究使用C的命令处理,但我遇到了这个C程序的问题.它正在执行ls命令之前.
Gcc信息:
gcc version 6.2.1 20161124 (Debian 6.2.1-5)
Run Code Online (Sandbox Code Playgroud)
这是代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
printf("Is command processor available?\n");
if (system(NULL))
{
printf("Command processor available!\n");
}
else
{
printf("Command processor not available!\n");
exit(1);
}
printf("Executing command ls");
i=system("ls");
printf("Returned value is: %d.\n",i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我所说的代码就是这条特定的代码:
printf("Executing command: ls");
Run Code Online (Sandbox Code Playgroud)
如果使用该段代码运行程序,则输出为:
Is command processor available?
Command processor is available
systemProcessing systemProcessing.c
Executing command: lsReturned value is: 0.
Run Code Online (Sandbox Code Playgroud)
它在实际被告知之前执行命令
但是当我使用新行"\n"完成代码时,其输出符合预期:
Is command processor available?
Command processor is …Run Code Online (Sandbox Code Playgroud) 我一直在学习远程/任意命令执行。在这样做的过程中,我遇到了一些我认为尝试和利用会很有趣的 Ruby。
我在设法让它运行 'ls' 命令时取得了一些成功,但我不知道如何将空格字符添加到我的命令中。如果我在其中添加一个空格,URI 调用的 parse 方法将引发异常。
这是我试图利用的代码:
injection = "www.google.com';ls;#"
require 'uri'
URI.parse(injection)
puts `curl '#{injection}'`
Run Code Online (Sandbox Code Playgroud)
因此,如果您选择接受它,您的挑战是仅通过更改注入字符串来运行“ls -l”命令而不是“ls” 。除了第一行,您不能更改任何内容。
我尝试过的事情:
ls%2f-l - # Doesn't raise an exception but unix doesn't unescape CGI encodings.
ls\x20-l - # Raises an exception because Ruby parses the UTF-8.
# Other various escape combinations (\\x20, etc)
Run Code Online (Sandbox Code Playgroud)
也许这是不可能的?
谢谢