2017-07-31 8 views
-1

古いVBをPSに書きたいのですが、古いDOSコマンドがいくつかありますが、ここではpowershellに書き込むことに苦労しています。例えば、私は、アーカイブからファイルを削除すると、そのVBで書かれた方法は、次のとおりです。Powershellで古いVBコマンドを書く方法

PowerShellで
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 

は、/ C DELは私が困っ書き込みを抱えているラインです。 PowerShellでこのコマンドを書くにはどうすればよいですか、それとも私はそれを完全に無視して、私のIF文で続けますか?

おかげで、PowerShellの

+2

私が使用します 'ファイルを削除するにはRemove-Itemを使用します。それを行うために 'cmd.exe'を呼び出すことは悪い習慣です。あなたの質問の残りの部分は、あなたが言語の構文をいくつか読み上げるべきであることを示唆するかなり基本的なものです。 –

+1

また、ここには「DOS」はありません。 (Cmd.exeはDOSとは関係ありません) –

+2

あなたはVertigoRayから良い答えを得ました。 VBScriptをPowershellに変換する際には、構文の1対1の単純な変換を試みない*ことを強くお勧めします。代わりに、VBScriptが何をしているのかを理解し、潜在的に間違ったVBScriptを永続化させる最適なコードを生成するのではなく、慣用的なPowerShellを書く(適切なコマンドレット、構文、スタイルなどを使用する)どのように私はVBScriptでそれをやってみることを勧めましたか?例えば、きれいなVBSを書くのではなく、バッチの翻訳のように見えます)。 – alroc

答えて

3

、ちょうど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..' 
} 

はそこに間違いなくより多くのオプションがあります...

関連する問題