gpt4 book ai didi

windows - Raku:带空格的 shell 调用的语法是什么?

转载 作者:行者123 更新时间:2023-12-02 17:13:10 25 4
gpt4 key购买 nike

编辑:我将此作为错误报告给 Raku:qqx,shell 无法正确操作引号 https://github.com/rakudo/rakudo/issues/3518

一位管理员向我推荐了Proc::Async.new、run 和 shell 应该如何调用 cmd.exe? https://github.com/Raku/problem-solving/issues/20

这听起来确实和正在发生的事情一模一样,尤其是“不可能使用 ^ 转义空格。”部分。

如果有人想出解决方法,我将不胜感激。

Windows 7 和 Windows 10-1909

乐道之星版本2019.03.1

如何在 Raku 中编写此命令?

fsutil usn readdata "C:/NtUtil/test 1"

最大的错误是文件名中包含空格,而 Windows 需要将其引起双引号。单引号崩溃。

我无法让这两个中的任何一个使用包含空格的文件名。 fsutil 要么看到两个参数,要么看到一个名称实际上包含双引号的参数:

my @Result = qqx { C:/Windows/System32/fsutil.exe usn readdata "$FileName" }.lines;
for @Result -> $Line { say $Line; };

my $proc=run( "dir", "$FileName", :out );
my @RtnStr = $proc.out.slurp-rest.lines;
for @RtnStr -> $Line { say $Line; }

非常感谢,-T

编辑:将 Windows 10-1909 添加到竞争中

编辑:使用“shell”命令没有改变症状:

@Result = shell( "C:/Windows/System32/fsutil.exe usn readdata \"$FileName\"" ).lines;
for @Result -> $Line { say $Line; };

Usage : fsutil usn readData <filename>
Eg : fsutil usn readData C:\Temp\sample.txt

@Result = shell( "C:/Windows/System32/fsutil.exe usn readdata \"$FileName\"" );
for @Result -> $Line { say $Line; };

退出:

Proc.new(in => IO::Pipe, out => IO::Pipe, err => IO::Pipe, exitcode => 1, signal => 0, pid => 1728, command => ("C:/Windows/System32/fsutil.exe usn readdata \"C:/NtUtil/test 1\"",))

注意“exitcode => 1”和最后一个带有反斜杠的参数

编辑:使用单引号方法:

@Result = shell( 'C:/Windows/System32/fsutil.exe usn readdata "$FileName"' );

导致相同的错误:

Usage : fsutil usn readData <filename>
Eg : fsutil usn readData C:\Temp\sample.txt
Error: The filename, directory name, or volume label syntax is incorrect.
Proc.new(in => IO::Pipe, out => IO::Pipe, err => IO::Pipe, exitcode => 1, signal => 0, pid => 1192, command => ("C:/Windows/System32/fsutil.exe usn readdata \"\$FileName\"",))

最佳答案

shell :

shell('echo "two words"'); # OUTPUT: «two words»

到处都是一样的。它还将使用适用于任何操作系统的现有通用 shell。您还可以使用变量,前提是您转义了发往 shell 的引号:

my $words = "two words"
shell("echo \"$words\"")

shell "echo \""~ $words ~ "\""

关于windows - Raku:带空格的 shell 调用的语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60425787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com