axelia 发表于 2024-11-21 16:09

windows创建连续月文件夹并创建链接

本帖最后由 axelia 于 2024-11-21 16:22 编辑

使用场景:
比如有些程序,写死了原来的路径,不方便修改,程序会在原盘写 日期 20241121 这种文件夹,windows支持使用mklink链接,可以外接一个大容量存储盘来存储,不修改程序,写了个脚本来实现自动创建(可以挂计划任务,每个月执行一次)

直接上代码:

config.txt   (用于定义文件夹和链接文件夹) 下面样例:在S盘创建文件夹,链接到D盘

```
S:\Deployment\文件存储服务\app1D:\Deployment\文件存储服务\app1
S:\Deployment\文件存储服务\app2D:\Deployment\文件存储服务\app2
```


create_folder_and_link.ps1读取上面的config.txt 创建文件夹和链接

```
#使用方法:powershell .\create_folder_and_link.ps1因为创建链接文件需要管理员权限,需要使用管理员权限执行脚本
#修改config.txt 文件,内容格式: 源文件夹路径 空格 链接文件夹路径   例如:C:\test C:\test2


# 确保以管理员身份运行
if (-not ( ::GetCurrent()).IsInRole( "Administrator")) {
    Write-Host "This script must be run as an administrator."
    exit 1
}

# 获取当前日期
$today = Get-Date

# 计算下一个月的第一天
$nextMonthFirstDay = (Get-Date -Year $today.Year -Month ($today.Month + 1) -Day 1).Date

# 计算下一个月的最后一天
$nextMonthLastDay = (Get-Date -Year $nextMonthFirstDay.Year -Month $nextMonthFirstDay.Month -Day 1).AddMonths(1).AddDays(-1)

# 读取配置文件
$configFile = "config.txt"
$paths = Get-Content -Path $configFile

# 初始化日期变量
$currentDate = $nextMonthFirstDay

# 循环生成下一个月的所有日期
while ($currentDate -le $nextMonthLastDay) {
    # 格式化日期为yyyyMMdd
    $formattedDate = $currentDate.ToString("yyyyMMdd")

    foreach ($path in $paths) {
      # 分割路径
      $folderPath, $linkPath = $path -split ' '

      # 创建文件夹
      $fullFolderPath = Join-Path -Path $folderPath -ChildPath $formattedDate
      if (-not (Test-Path -Path $fullFolderPath)) {
            New-Item -ItemType Directory -Path $fullFolderPath
      }

      # 创建符号链接
      $fullLinkPath = Join-Path -Path $linkPath -ChildPath $formattedDate
      if (-not (Test-Path -Path $fullLinkPath)) {
            New-Item -ItemType SymbolicLink -Path $fullLinkPath -Target $fullFolderPath
      }
    }

    # 移动到下一天
    $currentDate = $currentDate.AddDays(1)
}

Write-Output "All folders and symbolic links created successfully."
```

Redragon 发表于 2024-11-21 23:00

我英文不好,但为何提示信息还是英文的

axelia 发表于 2024-11-22 08:54

Redragon 发表于 2024-11-21 23:00
我英文不好,但为何提示信息还是英文的

:Dweeqw 你可以改中文

页: [1]
查看完整版本: windows创建连续月文件夹并创建链接