Creando file .h con definiciones usando powershell y cmd

Soy newb en powerShell y en cmd, lo siento. Estoy tratando de escribir script que puede generar definir así

#define VERSION "a89aa153a054b865c0ef0a6eddf3dfd578eee9d2" 

en VERSIÓN quiero establecer el parámetro de la siguiente fuente

 .git\refs\heads\project 

Probé el siguiente script de cmd, pero tengo problemas con "personaje, no puedo escapinglo"

 echo #define VERSION \" > ver.h type .git\refs\heads\project >> ver.h echo \" >> ver.h 

También probé usar script de esa publicación http://blogs.technet.com/b/heyscriptingguy/archive/2008/04/29/how-can-i-read-a-text-file-and-extract- all-the-text-closed-in-double-quote-marks.aspx

pero tengo un problema cuando bash ejecutarlo. soy file creado writeDefine.ps1

 Const ForReading = 1 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("D:\Scripts\DefineTemplate.txt", ForReading) Do Until objFile.AtEndOfStream strText = "" strCharacter = objFile.Read(1) If strCharacter = Chr(34) Then Do Until objFile.AtEndOfStream strNewCharacter = objFile.Read(1) If strNewCharacter = Chr(34) Then Exit Do End If If strNewCharacter <> "" Then strText = strText & strNewCharacter End If Loop Wscript.Echo strText End If Loop objFile.Close 

Quiero leer la plantilla e insert VERSIÓN entre "caracteres" y escribir ese text en "ver.h", pero tengo un error

 D:\writeHeader.ps1:4 symbol:67 + Set objFile = objFSO.OpenTextFile("D:\Scripts\DefineTemplate.txt", <<<< ForReading) + CategoryInfo : ParserError: (,:String) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : MissingExpressionAfterToken 

DefineTemplate.txt

 #define VERSION "" 

Por favor, ayúdame. ¡Gracias!

El ejemplo de script es VBScript, no Powershell. Por lo tanto, no puedes ejecutarlo en Powershell. Sin embargo, puede ejecutarlo invocando cscript . También hay wscript que ejecuta VBScript, pero se usa para charts: windows emergentes y cosas así. Cambie el nombre del file como .vbs y ejecútelo. Al igual que,

 cscript d:\writeHeader.vbs 

Cmd.exe usa el sombrero char como escape. Al igual que,

 C:\temp>echo #define VERSION ^" > ver.h C:\temp>type ver.h #define VERSION " 

Editar: según cómo crear el encabezado en una sola línea, se debe invocar algún truco. Esto sería mucho más simple en Powershell, pero aquí va.

 :: Assume git data is in git.dat and it doesn't contain a newline echo ^"> quote.txt <nul set /pd=#define VERSION ^"> ver.h copy /y ver.h+git.dat+quote.txt ver2.h type ver2.h #define VERSION "0x000..." 

… Pero aún así haré esto en Powershell. Al igual que,

 $git = cat .git\refs\heads\project # Read the git project file $str = $("#define VERSION `"{0}`"" -f $git) # Build a formatted string set-content -LiteralPath ver.h -value $str # Write the string to a file