我无法弄清楚如何回显标准错误流并重定向可执行文件的错误流.
我来自Bourne shell和Korn shell背景,我将使用它;
# Write to stderr
echo "Error Message!" >&2
# Redirect stderr to file
/do/error 2>/tmp/err.msg
Run Code Online (Sandbox Code Playgroud) 我有一个批处理文件,将文件从一个文件夹移动到另一个文件夹 批处理文件由另一个进程生成.
我需要移动的一些文件中包含字符串"%20":
move /y "\\myserver\myfolder\file%20name.txt" "\\myserver\otherfolder"
Run Code Online (Sandbox Code Playgroud)
这会失败,因为它试图找到一个名称为的文件:
\\myserver\myfolder\file0name.txt
Run Code Online (Sandbox Code Playgroud)
有什么办法可以忽略%吗?我无法改变生成的文件以逃避这种情况,例如加倍百分号(%%),逃避/或^(插入符号)等.
我正在尝试从C#代码运行PowerShell脚本,但我遇到了一些(可能是环境)问题:
在我尝试运行它的机器上,会发生以下情况:
Set-ExecutionPolicy:Windows PowerShell已成功更新执行策略,但该设置被更具体范围内定义的策略覆盖.由于覆盖,您的shell将保留其当前有效的RemoteSigned执行策略.键入"Get-ExecutionPolicy -List"以查看执行策略设置.有关详细信息,请参阅"Get-Help Set-ExecutionPolicy".在行:1 char:46 + if((Get-ExecutionPolicy)-ne'AllSigned'){Set-ExecutionPolicy -Scope Process ... + ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~ + CategoryInfo:PermissionDenied :( :) [Set-ExecutionPolicy],SecurityException + FullyQualifiedErrorId:ExecutionPolicyOverride,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Unrestricted
UserPolicy Undefined
Process Bypass
CurrentUser Unrestricted
LocalMachine Unrestricted
Run Code Online (Sandbox Code Playgroud)我认为这是环境因素:
if (File.Exists("Start.ps1"))
{
string strCmdText = Path.Combine(Directory.GetCurrentDirectory(), "Start.ps1");
var process = System.Diagnostics.Process.Start(@"C:\windows\system32\windowspowershell\v1.0\powershell.exe ", strCmdText);
process.WaitForExit();
}
Run Code Online (Sandbox Code Playgroud)
脚本本身是无关紧要的,因为我已将其更改为简单
Write-Host "Hello"
$d=Read-Host
Run Code Online (Sandbox Code Playgroud)
我有同样的问题.
我有一个位于Program Files文件夹中并接受参数的脚本:verbose从其restart
文件夹运行它效果很好:
powershell ./<file.ps1> -verbose:$True -restart
Run Code Online (Sandbox Code Playgroud)
尝试使用完整路径运行它是我遇到问题的地方:
powershell & "C:\Program Files\Folder\<file.ps1> -verbose:$True -restart"
Run Code Online (Sandbox Code Playgroud)
上面的命令不运行脚本;相反,它会打开 PS 命令提示符,退出时会在记事本中打开脚本。
我还尝试将每个变量放在单独的引号中,但这效果不佳。
我找到了使用progra~1代替的解决方法Program Files,但我想以正确的方式解决问题。
我缺少什么?
我已经chcp 65001在命令提示符和Windows Powershell中强制使用了一段时间,但是从SO和其他几个社区的问答环节来看,这似乎是一种危险且低效的解决方案。Microsoft是否提供一种chcp 65001可以永久保存而无需手动更改注册表的改进/完整替代方案?如果没有,将来是否有公开宣布的时间表或议程来支持Windows CLI中的UTF-8?
我个人已经使用了chcp 949韩国字符支持,但反斜线的怪异显示\在多个应用程序(如Neovim),以及字符和不正确/难以理解的显示器是不是韩国未通过支持949似乎变得更加的最近有问题。
我正在尝试使用curl将一个来自powershell脚本的JSON字符串传递给build.phonegap.com api.
根据phonegap的论坛,当在Windows机器上运行时,JSON数据必须格式化为:
curl.exe -ku user@email:mypass -X PUT -d "data={\"password\":"\keypass\"}" https://build.phonegap.com/api/v1/key
Run Code Online (Sandbox Code Playgroud)
实际上,从命令行调用时,这确实运行良好.
但是,当我尝试在powershell脚本中调用它时,双引号似乎被剥离.
到目前为止,我尝试过:
curl.exe -ku user@email:mypass -X PUT -d '"data={\"password\":\"keypass\"}"' https://build.phonegap.com/api/v1/key
curl.exe -ku user@email:mypass -X PUT -d '"data={"password":"keypass"}"' https://build.phonegap.com/api/v1/key
curl.exe -ku user@email:mypass -X PUT -d '\"data={\\\"password\\\":\\\"keypass\\\"}\"' https://build.phonegap.com/api/v1/key
curl.exe -ku user@email:mypass -X PUT -d "`"data={\`"password\`":\`"build*2014`\`"}`"" https://build.phonegap.com/api/v1/key
知道怎么做到这一点?
谢谢你的时间,科恩
powershell ×5
batch-file ×1
c# ×1
command-line ×1
curl ×1
escaping ×1
stderr ×1
utf-8 ×1
windows ×1