java 目录不存在_如果目录不存在,请创建目录

回答(10)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

你试过 -Force 参数吗?

New-Item -ItemType Directory -Force -Path C:\Path\That\May\Or\May\Not\Exist

有关更多详细信息,请参阅New-Item MSDN帮助文章 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

从您的情况来看,您需要每天创建一次“Revision#”文件夹,其中包含“Reports”文件夹 . 如果是这种情况,您只需要知道下一个修订号是什么 . 编写一个获取下一个修订号Get-NextRevisionNumber的函数 . 或者你可以这样做:

foreach($Project in (Get-ChildItem "D:\TopDirec" -Directory)){

#Select all the Revision folders from the project folder.

$Revisions = Get-ChildItem "$($Project.Fullname)\Revision*" -Directory

#The next revision number is just going to be one more than the highest number.

#You need to cast the string in the first pipeline to an int so Sort-Object works.

#If you sort it descending the first number will be the biggest so you select that one.

#Once you have the highest revision number you just add one to it.

$NextRevision = ($Revisions.Name | Foreach-Object {[int]$_.Replace('Revision','')} | Sort-Object -Descending | Select-Object -First 1)+1

#Now in this we kill 2 birds with one stone.

#It will create the "Reports" folder but it also creates "Revision#" folder too.

New-Item -Path "$($Project.Fullname)\Revision$NextRevision\Reports" -Type Directory

#Move on to the next project folder.

#This untested example loop requires PowerShell version 3.0.

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

我希望能够轻松地让用户为PowerShell创建默认配置文件以覆盖某些设置,最后使用以下单行(多个语句是,但可以粘贴到PowerShell中并立即执行,这是主要目标):

cls; [string]$filePath = $profile; [string]$fileContents = ''; if(!(Test-Path $filePath)){md -Force ([System.IO.Path]::GetDirectoryName($filePath)) | Out-Null; $fileContents | sc $filePath; Write-Host 'File created!'; } else { Write-Warning 'File already exists!' };

为了便于阅读,以下是我将如何在ps1文件中执行此操作:

cls; # Clear console to better notice the results

[string]$filePath = $profile; # declared as string, to allow the use of texts without plings and still not fail.

[string]$fileContents = ''; # Statements can now be written on individual lines, instead of semicolon separated.

if(!(Test-Path $filePath)) {

New-Item -Force ([System.IO.Path]::GetDirectoryName($filePath)) | Out-Null; # Ignore output of creating directory

$fileContents | Set-Content $filePath; # Creates a new file with the input

Write-Host 'File created!';

} else {

Write-Warning "File already exists! To remove the file, run the command: Remove-Item $filePath";

};

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

$path = "C:\temp\NewFolder"

If(!(test-path $path))

{

New-Item -ItemType Directory -Force -Path $path

}

Test-Path 检查路径是否存在 . 如果没有,它将创建一个新目录 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

这是一个适合我的简单方法 . 它检查路径是否存在,如果不存在,它不仅会创建根路径,还会创建所有子目录:

$rptpath = "C:\temp\reports\exchange"

if (!(test-path -path $rptpath)) {new-item -path $rptpath -itemtype directory}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

$path = "C:\temp\"

If(!(test-path $path))

{md C:\Temp\}

第一行创建一个名为 $path 的变量,并为其指定"C:\temp"的字符串值

第二行是 If 语句,它依赖于Test-Path cmdlet来检查变量 $path 是否不存在 . 使用 ! 符号限定not exists

第三行:如果找不到上面字符串中存储的路径,将运行大括号之间的代码

md 是输入的简短版本: New-Item -ItemType Directory -Path $path

注意:我没有使用下面的 -Force 参数进行测试,以查看路径是否已存在时是否存在不良行为 .

New-Item -ItemType Directory -Path $path

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

我有同样的问题 . 你可以使用这样的东西:

$local = Get-Location;

$final_local = "C:\Processing";

if(!$local.Equals("C:\"))

{

cd "C:\";

if((Test-Path $final_local) -eq 0)

{

mkdir $final_local;

cd $final_local;

liga;

}

## If path already exists

## DB Connect

elseif ((Test-Path $final_local) -eq 1)

{

cd $final_local;

echo $final_local;

liga; (function created by you TODO something)

}

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

我知道使用PowerShell创建目录的方法有3种

Method 1: PS C:\> New-Item -ItemType Directory -path "c:\livingston"

Method 2: PS C:\> [system.io.directory]::CreateDirectory("c:\livingston")

Method 3: PS C:\> md "c:\livingston"

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

以下代码段可帮助您创建完整路径 .

Function GenerateFolder($path){

$global:foldPath=$null

foreach($foldername in $path.split("\")){

$global:foldPath+=($foldername+"\")

if(!(Test-Path $global:foldPath)){

New-Item -ItemType Directory -Path $global:foldPath

# Write-Host "$global:foldPath Folder Created Successfully"

}

}

}

上面的函数拆分传递给函数的路径,并检查每个文件夹是否存在 . 如果它不存在,它将创建相应的文件夹,直到创建目标/最终文件夹 .

要调用该函数,请使用以下语句:

GenerateFolder "H:\Desktop\Nithesh\SrcFolder"

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

指定 -Force 标志时,如果文件夹已存在,PowerShell将不会报警 .

一内胆:

Get-ChildItem D:\TopDirec\SubDirec\Project* | `

%{ Get-ChildItem $_.FullName -Filter Revision* } | `

%{ New-Item -ItemType Directory -Force -Path (Join-Path $_.FullName "Reports") }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值