我在shell脚本中有以下内容,我想将以下行转换为windows cmd文件.任何人都可以在windows cmd文件中提供与"rm"和"mv"等效的输入.
rm -f ${BUILD_ID}/${BUILD_ASIC}*rampatch*
mv ${BUILD_ID}/${BUILD_ASIC}*rampatch* ${BUILD_ID}/emul/
Run Code Online (Sandbox Code Playgroud) 任何人都可以帮我拉取注册表项的值并将其放入PowerShell中的变量中吗?到目前为止,我已经使用了Get-ItemProperty
,reg query
虽然两者都会提取值,但两者都会添加额外的文本.我只需要注册表项中的字符串文本,只需要键中的字符串文本.我确信我可以创建一个函数去除额外的文本,但如果有什么变化(即reg键名称),它可能会影响这个.
我想从下面的路径中提取文件名:
D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv
现在我写了这个代码来获取文件名.只要文件夹级别没有改变,这工作正常.但是如果文件夹级别已更改,则此代码需要重写.我正在寻找一种方法使其更灵活,例如代码总是可以提取文件名,而不管文件夹级别如何.
($outputFile).split('\')[9].substring(0)
Run Code Online (Sandbox Code Playgroud) 编辑
如果您想在计算机启动时或基于事件执行任何任务,这将非常有用
回到问题
我有两个问题:
我想在启动命令提示符时执行一些特定的命令.
例如cls
,清除我的命令提示符.
我想在批处理文件中执行一些命令,并等待用户输入新命令(如果有的话).
例如,一个批处理文件,它将用户带到某个指定的文件夹,然后等待用户从命令提示符重命名/删除文件.
我该怎么做?
我正在使用PowerShell并尝试运行以下命令:
.\test_cfdp.exe < test.full | tee test.log
Run Code Online (Sandbox Code Playgroud)
test.full是一个模拟test_cfdp.exe命令行输入的脚本.但是,我收到以下错误:
The '<' operator is reserved for future use.
Run Code Online (Sandbox Code Playgroud)
有没有其他方法(即cmdlet)我可以用来使这个命令在PowerShell中工作?
我试图获取当前目录并使用它来运行应用程序,无论文件放在何处,无论路径如何更改
Dim fso: set fso = CreateObject("Scripting.FileSystemObject")
Dim CurrentDirectory
CurrentDirectory = fso.GetAbsolutePathName(".")
Dim Directory
Directory = CurrentDirectory\attribute.exe
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "Directory" & Chr(34), 0
Set WinScriptHost = Nothing
Run Code Online (Sandbox Code Playgroud)
我如何实际设置此代码,以便它做我想要它正确做的事情?提前致谢!
是否有可能在一次运行中将stdout从外部程序重定向到外部程序的变量和stderr到另一个变量?
例如:
$global:ERRORS = @();
$global:PROGERR = @();
function test() {
# Can we redirect errors to $PROGERR here, leaving stdout for $OUTPUT?
$OUTPUT = (& myprogram.exe 'argv[0]', 'argv[1]');
if ( $OUTPUT | select-string -Pattern "foo" ) {
# do stuff
} else {
$global:ERRORS += "test(): oh noes! 'foo' missing!";
}
}
test;
if ( @($global:ERRORS).length -gt 0 ) {
Write-Host "Script specific error occurred";
foreach ( $err in $global:ERRORS ) {
$host.ui.WriteErrorLine("err: $err");
}
} else {
Write-Host …
Run Code Online (Sandbox Code Playgroud) 我正在尝试接受用户输入,在继续操作之前,我想在屏幕上收到一条消息,而不是确认,无论用户是否想要继续.我正在使用以下代码,但它不起作用:
write-host "Are you Sure You Want To Proceed:" -Confirm
Run Code Online (Sandbox Code Playgroud) 在下面的代码中,我需要检查版本字符串是否为空,然后将其值附加到请求变量.
if ([string]::IsNullOrEmpty($version))
{
$request += "/" + $version
}
Run Code Online (Sandbox Code Playgroud)
如果有条件,如何检查?
我编写了函数'A',它将调用许多其他函数之一.为了保存重写函数'A',我想传递函数作为函数'A'的参数调用.例如:
function A{
Param($functionToCall)
Write-Host "I'm calling : $functionToCall"
}
function B{
Write-Host "Function B"
}
Function C{
write-host "Function C"
}
A -functionToCall C
Run Code Online (Sandbox Code Playgroud)
返回:我正在打电话:C
我期待它回归:我在呼唤:功能C.
我尝试了各种各样的东西,比如:
Param([scriptblock]$functionToCall)
Run Code Online (Sandbox Code Playgroud)
无法将System.String转换为ScriptBlock
A -functionToCall $function:C
Run Code Online (Sandbox Code Playgroud)
返回"写主机"功能C"
A - functionToCall (&C)
Run Code Online (Sandbox Code Playgroud)
这在其余部分之前进行评估:
Function C
I'm Calling :
Run Code Online (Sandbox Code Playgroud)
我确定这是编程101,但我无法弄清楚正确的语法或它是什么我做错了.我们将非常感激地提供任何帮助.非常感谢.
powershell ×7
cmd ×2
windows ×2
bash ×1
command ×1
command-line ×1
directory ×1
redirect ×1
registrykey ×1
shell ×1
stderr ×1
stdout ×1
variables ×1
vbscript ×1