簡體   English   中英

如何使用動態名稱在Powershell中創建CSV文件?

[英]How to create csv file in powershell with dynamic name?

我正在嘗試編寫一個PowerShell函數,該函數基本上將在文件夾中創建一個文件,該文件的名稱作為$fileName參數傳遞給該函數。

這是函數:

$mainFolder = "C:\testFolder\"
function checkIfExist($path, $fName) {
    if (!(Test-Path $path)) {
        $path = $mainFolder + "data"
        new-item -name $fName -type "file" -path $path -force   
    }
    else {}
}

錯誤:

New-Item : Access to the path 'C:\testFolder\data' is denied.
At C:\testFolder\test.ps1:9 char:3
+         New-Item -Name $fileName -Type "file" -Path $path -Force
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (C:\testFolder\data:String) [New-Item], UnauthorizedAccessException
    + FullyQualifiedErrorId : NewItemUnauthorizedAccessError,Microsoft.PowerShell.Commands.NewItemCommand

但是由於某種原因,如果我切換:

New-Item -Name $fileName -Type "file" -Path $path -Force

至:

New-Item -Name "static name.csv" -Type "file" -Path $path -Force

它工作得很好。

我以管理員身份運行該腳本,但仍然得到相同的結果。

更新:

我通過使用以下行來運行函數:

checkIfExist($fullPath, $fileName)

您錯誤地調用了函數,Powershell不使用function($param1, $param2)格式,而是使用function $param1 $param2 (使用位置參數)或function -Param1 $param1 -Param2 $param2 (使用命名參數)參數)。

您似乎只是在測試文件夾路徑,而不是文件本身。

Join-Path可用於創建文件的完整路徑,然后對其進行測試,僅在文件不存在時創建該路徑。

如果要添加data子文件夾,只需將其與參數一起傳遞給函數。

function checkIfExist($path, $fileName) {
    $fullpath = Join-Path $path $fileName
    if (!(Test-Path $fullpath)) {
        New-Item -Path $path -Name $fileName -ItemType File -Force
    }
}

#example 1
checkIfExist "C:\folder" "file.csv"

#example 2
checkIfExist "C:\folder\data" "anotherfile.csv"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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