2009-11-13 18 views
9

Puede ser una pregunta simple, pero soy nuevo en PowerShell y no pude encontrar la forma de hacerlo. Básicamente, tengo que ejecutar un archivo .BAT si no existe un archivo especificado. El nombre del archivo está en un patten como "mmddyyy .dat" en una carpeta, donde mmddyyyy es el mes de hoy, el día (0 prefijo si < 10) y el año. códigos seudo sería algo como esto:¿Comprueba si el archivo existe y ejecuta un archivo por lotes en 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? 

Respuesta

7

te recomiendo hacer una función reutilizable como la siguiente:

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 deseo agregar dos parámetros como args a la función y devolver el resultado en el formato de "{0} {1: d2} {2: d2} {3} {4}" -f arg [0] ,. .., arg [1]. ¿Cómo puedo llamar a esta función? Recibí un error llamando a GetDateFleName ("C: \ temp \ *", "* .dat"). –

+2

'$ dateFileName =" {0: MMddyyyy} .dat "-f (Get-Date)' sería un poco más corto y menos intrincado. – Joey

+0

Agregue los parámetros a una función como esta: function foo ([string] $ foo = "foo", [string] $ bar = "bar") { Write-Host "Arg: $ foo"; Write-Host "Arg: $ bar"; } y se llama a la función de este modo: foo "param1" "param2" – BlueSam

23

El comando es:

test-path .\example.txt 

Devuelve Verdadero o Falso

Para Docs cómo acerca de la documentación oficial? Ahí es donde lo compruebo. http://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx

también eggheadcafe.com tiene una gran cantidad de ejemplos: http://www.eggheadcafe.com/conversationlist.aspx?groupid=2464&activetopiccard=0

Aunque no he probado expresiones regulares en PoweShell esto puede ayudarle a:

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

+0

cómo t o gremiar una cadena basada en la fecha de hoy, en un patrón mmddaaaa? Por ejemplo, "11132009" para hoy. –

Cuestiones relacionadas