吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 173|回复: 1
上一主题 下一主题
收起左侧

[学习记录] windows创建连续月文件夹并创建链接

  [复制链接]
跳转到指定楼层
楼主
axelia 发表于 2024-11-21 16:09 回帖奖励
本帖最后由 axelia 于 2024-11-21 16:22 编辑

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

直接上代码:

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

S:\Deployment\文件存储服务\app1  D:\Deployment\文件存储服务\app1
S:\Deployment\文件存储服务\app2  D:\Deployment\文件存储服务\app2



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

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

# 确保以管理员身份运行
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "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
我英文不好,但为何提示信息还是英文的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 03:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表