2017-07-31 105 views
-1

我想写一些旧的VB到PS中,但是这里有一些旧的DOS命令,我正努力写入PowerShell。举例来说,我想从档案中删除文件,它的用VB编写的方法是:如何在Powershell中编写旧的VB命令

command=(%comspec% /C DEL C:\\MyFile.txt",0,True) 


    If result <> 0 then 
     txtFile.writeline "ERROR" 
     txtFile.writeline "File does not exist.." 
     result = 0 
    Else  
     txtFile.writeline "Success"  
    End if 

在PowerShell中,将/ C DEL是我无法写入行。我怎么会写在powershell这个命令,或者我会完全忽略它,只是继续我的IF语句?

感谢,

+2

我会用'删除项目“删除文件。调用'cmd.exe'来做这将是不好的做法。你的问题的其余部分是非常基本的东西,这表明你应该阅读一些语言语法。 –

+1

另外,这里没有涉及“DOS”。 (Cmd.exe与DOS无关。) –

+2

您从VertigoRay收到了很好的回答。我强烈建议您在将VBScript转换为Powershell时不要尝试对语法进行简单的一对一转换。相反,理解* VBScript正在做什么,而是编写惯用的PowerShell(使用正确的cmdlet,语法,样式等),而不是产生次优代码,这会延续可能导致错误的VBScript(您在此发布的脚本不是我如何建议在VBScript中开始使用它,例如 - 它看起来像批量翻译而不是写入干净的VBS)。 – alroc

回答

3

在PowerShell中,只需使用Remove-Item。这种模仿你的VB很好:

try { 
    Remove-Item 'C:\MyFile.txt' -Force -ErrorAction 'Stop' 
    Write-Host 'Success' 
} catch [System.Management.Automation.ItemNotFoundException] { 
    Write-Host 'ERROR' 
    Write-Host 'File does not exist..' 
} 

当然,还有十几个方面,这猫可剥皮:

if (Test-Path 'C:\MyFile.txt') { 
    Remove-Item 'C:\MyFile.txt' -Force 
    Write-Host 'Success' 
} else { 
    Write-Host 'ERROR' 
    Write-Host 'File does not exist..' 
} 

肯定有更多的选择了...