2012-11-19 102 views
1

我福利局在PowerShell和在cmd中,遺憾的定義.h文件中。 我試着寫腳本,它可以產生這樣定義創建使用PowerShell和CMD

#define VERSION "a89aa153a054b865c0ef0a6eddf3dfd578eee9d2" 

在版我想從一個源設置參數

.git\refs\heads\project 

我試過未來CMD腳本,但我有問題與「字,我不能從後

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

此外,我正在試圖使用腳本逃吧http://blogs.technet.com/b/heyscriptingguy/archive/2008/04/29/how-can-i-read-a-text-file-and-extract-all-the-text-enclosed-in-double-quote-marks.aspx

,但我有,當我試圖運行一個問題。 我正在創建的文件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 

我想讀的模板之間插入VERSION「字符和文本寫入‘ver.h’,但 我有一個錯誤

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 "" 

請幫幫我,謝謝!

+1

您擁有的代碼是vbscript,沒有powershell。將其重命名爲writeDefine.vbs。 –

+0

哦,謝謝)對不起) – BergP

回答

2

腳本樣本VBScript中,不PowerShell的。因此,您無法在Powershell上執行它。你可以,但是,通過調用cscript執行它。還有執行VBScript的wscript,但它用於圖形:彈出式窗口等。該文件重命名爲.vbs並運行它。像這樣,

cscript d:\writeHeader.vbs 

CMD.EXE會使用帽子焦炭作爲逃生。像這樣,

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

編輯:按照如何在一行上創建標題,必須調用一些欺騙。這在Powershell中會更加簡單,但這裏就是這樣。

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

...但我還是這樣做在PowerShell中。像這樣,

$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 
+0

非常感謝!關於cmd。該腳本生成3行代碼。你能告訴我,我怎麼把它寫在一行中? – BergP