吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 189|回复: 7
收起左侧

[经验求助] Windows把每50个文件放在一个文件夹内

[复制链接]
昨日当年 发表于 2024-4-17 13:56
40吾爱币
本帖最后由 昨日当年 于 2024-4-17 14:12 编辑

求一个Windows脚本,将当前目录下,双击脚本自动每50个文件自动创建一个文件夹然后复制到里面,创建的文件夹以1、2、3..这样命名,要排除掉这个脚本文件

最佳答案

查看完整内容

直接问文心一言?或是GPT。 把你的详细需求说清楚。就会生成了。 你当前目录下有很多文件和文件夹? 需要每50个归纳到一个新文件夹中? 比如有100个文件夹和文件。 归纳后,就剩2个文件夹?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xxl1039 发表于 2024-4-17 13:56

直接问文心一言?或是GPT。
把你的详细需求说清楚。就会生成了。
你当前目录下有很多文件和文件夹?
需要每50个归纳到一个新文件夹中?
比如有100个文件夹和文件。
归纳后,就剩2个文件夹?
xxl1039 发表于 2024-4-17 14:03
存为.bat文件:
powershell脚本:

# 设置源文件夹和目标文件夹的路径  
$sourceFolder = "C:\path\to\source\folder"  
$destinationFolder = "C:\path\to\destination\folder"  
  
# 获取源文件夹中的所有文件  
$files = Get-ChildItem -Path $sourceFolder -File  
  
# 初始化计数器和文件夹索引  
$count = 0  
$folderIndex = 1  
  
# 遍历文件并创建文件夹  
foreach ($file in $files) {  
    # 每50个文件创建一个新的文件夹  
    if ($count % 50 -eq 0) {  
        $folderName = "Folder_$folderIndex"  
        $newFolder = New-Item -Path $destinationFolder -Name $folderName -ItemType Directory  
        $folderIndex++  
    }  
      
    # 将文件移动到新的文件夹中  
    Move-Item -Path $file.FullName -Destination $newFolder.FullName  
      
    # 增加计数器  
    $count++  
}
请注意,你需要将$sourceFolder和$destinationFolder变量的值替换为实际的源文件夹和目标文件夹路径。这个脚本将遍历源文件夹中的所有文件,每50个文件创建一个新的文件夹,并将这些文件移动到相应的文件夹中。
在运行脚本之前,请确保你有足够的权限来读取源文件夹中的文件并在目标文件夹中创建文件夹。此外,为了避免数据丢失或损坏,建议在运行脚本之前备份重要的文件。
 楼主| 昨日当年 发表于 2024-4-17 14:04
xxl1039 发表于 2024-4-17 14:03
存为.bat文件:
powershell脚本:

哥,这样不行,我需要双击脚本自动归类当前目录下的文件,不要在脚本里设置路径的
xxl1039 发表于 2024-4-17 14:08
昨日当年 发表于 2024-4-17 14:04
哥,这样不行,我需要双击脚本自动归类当前目录下的文件,不要在脚本里设置路径的

要运行这个脚本,请按照以下步骤操作:
1、打开文本编辑器(如记事本)。
2、将上面的代码粘贴到文本编辑器中。
3、将文件保存为.ps1扩展名,例如SortFiles.ps1。
4、确保你的PowerShell执行策略允许运行本地脚本。你可以通过运行Get-ExecutionPolicy来检查当前策略,如果需要更改,可以使用Set-ExecutionPolicy命令(以管理员身份运行PowerShell)。
5、将脚本文件保存在你想要归类文件的目录中。
6、双击脚本文件,它应该会在PowerShell中运行,并自动归类当前目录下的文件。
请注意,运行脚本时可能需要管理员权限,具体取决于你的系统设置和文件权限。此外,由于脚本会移动文件,所以在运行之前请确保备份重要文件。
脚本:
# 获取当前工作目录作为源文件夹和目标文件夹  
$currentDirectory = Get-Location  
$sourceFolder = $currentDirectory.Path  
$destinationFolder = Join-Path $currentDirectory "SortedFiles"  
  
# 如果目标文件夹不存在,则创建它  
if (!(Test-Path $destinationFolder)) {  
    New-Item -Path $destinationFolder -ItemType Directory  
}  
  
# 获取当前目录下的所有文件  
$files = Get-ChildItem -Path $sourceFolder -File  
  
# 初始化计数器和文件夹索引  
$count = 0  
$folderIndex = 1  
  
# 遍历文件并创建文件夹进行归类  
foreach ($file in $files) {  
    # 每50个文件创建一个新的文件夹  
    if ($count % 50 -eq 0) {  
        $folderName = "Folder_$folderIndex"  
        $newFolder = Join-Path $destinationFolder $folderName  
        New-Item -Path $newFolder -ItemType Directory  
        $folderIndex++  
    }  
      
    # 将文件移动到新的文件夹中  
    Move-Item -Path $file.FullName -Destination $newFolder  
      
    # 增加计数器  
    $count++  
}  
  
# 输出完成信息  
Write-Host "文件归类完成!"

用过gpt吗,这些简单需求,能直接完成。
 楼主| 昨日当年 发表于 2024-4-17 14:11
xxl1039 发表于 2024-4-17 14:08
要运行这个脚本,请按照以下步骤操作:
1、打开文本编辑器(如记事本)。
2、将上面的代码粘贴到文本编 ...

我试了不行
xjiao 发表于 2024-4-17 14:16
新建BAT文件,内容如下

@echo off
setlocal enabledelayedexpansion

set count=0
set folder=1

for %%A in (*.*) do (
    set /A count+=1

    if !count! lss 50 (
        if /i not "%%~fA"=="%0" (
            if not exist "!folder!" mkdir "!folder!"
            move /Y "%%~fA" "!folder!"
        )
    ) else (
        set /A folder+=1
        set count=0
    )
)

endlocal
xjiao 发表于 2024-4-17 21:08

可以实现请采纳@昨日当年
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-5-1 11:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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