2009-11-13 6 views
9

Cela peut être une question simple, mais je suis nouveau à PowerShell et ne pouvais pas trouver un moyen de le faire. Fondamentalement, je dois exécuter un fichier .BAT si un fichier spécifié n'existe pas. Le nom de fichier est dans un patten comme "mmddyyy .dat" dans un dossier, où mmddyyyy est le mois d'aujourd'hui, jour (0 préfixe si < 10) et l'année. codes pseudo serait quelque chose comme ceci:Vérifiez si le fichier existe et exécutez un fichier de commandes dans PowerShell?

$File = "C:\temp\*mmddyyyy*.dat" # how to parse Get-Date mmddyyyy and build this pattern? 
#if $File exist # check any file exist? 
    .\myBatch.bat # run the bat file, can I run it in hidden mode? 

Répondre

7

Je recommande de faire une fonction réutilisable comme celle-ci:

function GetDateFileName 
{ 
    $date = Get-Date 
    $dateFileName = "$(get-date -f MMddyyyy).dat" 
    return $dateFileName 
} 
$fileName = GetDateFileName 
$filePath = "c:\temp\" + $fileName 

if([IO.File]::Exists($filePath) -ne $true) 
{ 
    #do whatever 
} 
+0

Si je veux ajouter deux paramètres en tant qu'args à la fonction et retourner le résultat dans le format de "{0} {1: d2} {2: d2} {3} {4}" -f arg [0] ,. .., arg [1]. Comment puis-je faire l'appel cette fonction? J'ai échoué en appelant GetDateFleName ("C: \ temp \ *", "* .dat"). –

+2

'$ dateFileName =" {0: MMddyyyy} .dat "-f (Get-Date)' serait un peu plus court et moins compliqué. – Joey

+0

Vous ajoutez les paramètres à une fonction comme suit: fonction foo ([chaîne] $ foo = "foo", [chaîne] $ bar = "barre") { Écrire-hôte "Arg: $ foo"; Écrire l'hôte "Arg: $ bar"; } et que vous appelez la fonction comme ceci: foo "param1" "param2" – BlueSam

23

La commande est:

test-path .\example.txt 

Renvoie True ou False

Docs sur la façon dont les documents officiels? C'est là que je vérifie. http://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx

aussi eggheadcafe.com a beaucoup d'exemples: http://www.eggheadcafe.com/conversationlist.aspx?groupid=2464&activetopiccard=0

Bien que je ne l'ai pas essayé regex dans poweshell cela peut vous aider:

http://www.eggheadcafe.com/software/aspnet/33029659/regex-multiline-question.aspx

+0

comment t o guilde une chaîne basée sur la date du jour, dans un modèle mmddyyyy? Par exemple "11132009" pour aujourd'hui. –

Questions connexes