2011-01-29 24 views

Respuesta

29
$a=get-content a.txt 
$suffix="tableA" 

$ExecutionContext.InvokeCommand.ExpandString($a) 
+2

Tenga en cuenta que si $ a contiene una cadena entrecomillada (por ejemplo, $ a = 'eliminar de' test_ $ sufijo '') perderá sus comillas cuando se expanda. – mjolinor

+1

Eso es verdad. Lo mismo vale para $ signos. Puedes escapar de ellos con un tic '. Además, la técnica de cadena aquí solo permite líneas de PowerShell reconocible. No puedo tener 'Esto es texto' en el archivo (sin las comillas). Habilitar eso es útil al hacer aplicaciones de tipo de plantilla. –

+0

No entiendo esta parte: "Además, la técnica de cadena aquí solo permite líneas de PowerShell reconocible. No puedo tener 'Esto es texto' en el archivo (sin las comillas). Habilitar eso es útil al hacer aplicaciones de tipo de plantilla. " http://mjolinor.wordpress.com/2011/02/02/here-string-test/ – mjolinor

1

Aquí hay una manera. Las variables en una secuencia aquí doble son reemplazadas automáticamente. Solo asegúrese de que su archivo de entrada cumpla con las reglas de PS para este tipo de cadenas.

function convertto-herestring { 
begin {$temp_h_string = '@"' + "`n"} 
process {$temp_h_string += $_ + "`n"} 
end { 
    $temp_h_string += '"@' 
    iex $temp_h_string 
    } 
} 

$suffix = "tableA" 

get-content testfile.txt 

delete from test_$suffix 

get-content testfile.txt | convertto-herestring 

delete from test_tableA 
Cuestiones relacionadas