簡體   English   中英

為什么PowerShell不能保存到工作文件夾?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM