[英]Why is PowerShell not saving to working folder?
我有一個PowerShell腳本將文件夾中的.xls文件轉換為.csv文件。 我有八個.xls文件(雖然數字無關緊要)要轉換為.csv,它們位於C:\\ Users \\ UserName \\ Documents \\ ABC \\ RawData \\ CSV \\ WorkingFolder 。 該腳本可以很好地將.xls轉換為.csv,但問題是.csv文件[創建后]被保存到C:\\ Users \\ UserName \\ Documents ,這是錯誤的位置! 我希望將.csv文件保存到原始.xls文件所在的同一文件夾中: C:\\ Users \\ UserName \\ Documents \\ ABC \\ RawData \\ CSV \\ WorkingFolder ,這也是我運行的文件夾劇本。 我試過了-path .
無濟於事。 任何幫助,將不勝感激! 腳本如下。
$excel = new-object -ComObject "Excel.Application"
$excel.DisplayAlerts = $True
$excel.Visible = $False
$src_dir = $(get-location).Path # this obtains the source location, but not sure how I might
# be able to use it
foreach ($file in get-childitem *.xls) {
$wb = $excel.Workbooks.Open($file.FullName)
$wb.SaveAs($file.Name + ".csv", 6) # 6 -> csv
$wb.Close($True)
}
$excel.Quit()
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
get-childitem *.xls | foreach { remove-item -path $_.fullname }
# last line of script deletes the .xls files after they have been converted to .csv,
# more to unclutter than for anything else
$file.Name
表示文件名,而不是文件的完整路徑
當你打電話的時候
$wb.SaveAs($file.Name + ".csv", 6) # 6 -> csv
您告訴Excel保存nameofmyfile.xls.csv
,並將其保存到默認文件夾位置,即文檔文件夾。
你需要打電話的是
$wb.SaveAs($file.FullName + ".csv", 6) # 6 -> csv
這將告訴Excel保存C:\\Users\\UserName\\Documents\\ABC\\RawData\\CSV\\WorkingFolder\\nameofmyfile.xls.csv
,這應該將文件保存到預期的文件夾位置。
您可以獲取當前位置並將其作為路徑
$localPath=(Get-Location).toString()
$wb.SaveAs($localPath + "\" + $file.Name + ".csv", 6) # 6 -> csv
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.