我是一個完整的bb和powershell腳本編寫的newb,並且一直在試圖弄清楚如何在powershell中定義一個變量,並在同一個目錄中存儲的批處理腳本中定義一個變量作爲PowerShell腳本。從同一個目錄中的.bat文件抓取powershell變量
基本上,我想要從config.bat中獲取Dropbox Path並將變量$ dropbox設置爲在powershell腳本中的其他變量中使用。這是我到目前爲止....
config.bat:
@Echo OFF
set Dropbox_Path=C:\Users\User\Documents\Dropbox
test.ps1摘錄:如果我指定的
#Grab Dropbox Path from config.bat and set $dropbox variable
$dropbox = Get-Content C:\Users\User\Documents\Dropbox\test\Batch-Files\config.bat `
| ? { $_ -match "Dropbox_Path=\s*"} `
| select -First 1 `
| % { ($_ -split "=", 2)[1] }
# Set other Variables using $dropbox
$input_csv = "$dropbox\test\Test.csv"
$master_csv = "$dropbox\test\Test-MASTER.csv"
$output_file = "$dropbox\test\Test.txt"
一切正常config.bat文件的絕對路徑(如圖所示),但如果我嘗試使用相對路徑$PSScriptRoot\config.bat
或.\config.bat
,則出現錯誤,powerhsell找不到顯示錯誤的config.bat文件...
「Get-Content:無法找到路徑'C:\ config.bat',因爲它不存在 。」
我也曾嘗試的另一種方式,並使用寫入主機,看看是否變量顯示正確的目錄....
$configFullPath = "$($pwd)\config.bat"
Write-Host "Config file full path = $configFullPath"
Import-Module -Force $configFullPath
$dropbox = Get-Content _config.bat `
| ? { $_ -match "Dropbox_Path=\s*"} `
| select -First 1 `
| % { ($_ -split "=", 2)[1] }
Write-Host "Config file full path = $configFullPath"
Write-Host "Dropbox Path = $dropbox"
PAUSE
與上面的代碼,我得到這個PS錯誤.. ..
「導入模塊:指定的模塊‘C:\用戶\用戶\ config.bat’。是 未加載,因爲沒有有效的模塊文件是在任何模塊 目錄中找到」
輸出顯示:
Config file full path = C:\Users\User\config.bat # WRONG
Dropbox Path =
的路徑必須是相對的,我的目的和它可能是一些令人尷尬的超級簡單,這裏的編碼大師都會讓我看起來像一個完整的numpty :)
請幫忙!
我現在用MyInvocation得到這個錯誤......「異常調用 「GetDirectoryName」 與 「1」 的說法(S): 「路徑不是合法的形式」 在線:1 char:1 + $ dropbox = Get-Content -Path「$([io.path] :: GetDirectoryName($ MyInvocation.MyCom ... – Bearwires
」 Get-Content:無法找到路徑'C:\ config.bat',因爲它不存在。「它似乎沒有爲配置文件位置定義正確的目錄,即使它位於相同的目錄中 – Bearwires
什麼版本PowerShell你在運行嗎?這適用於PowerShell 5和6測試版3. – lit