如何使用动态名称在 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
sub-folder,只需将它与参数一起传递给函数即可。
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"
我正在尝试编写一个 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
sub-folder,只需将它与参数一起传递给函数即可。
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"