将文件移动到具有相似名称的相应文件夹中的批处理脚本

将文件移动到具有相似名称的相应文件夹中的批处理脚本

我创建了从 SRR11219690 到 SRR11221063 的文件夹(总共 1537 个文件夹)

然后我下载了以下 SRR 文件:SRR11219690.sra SRR11219690.sra.vdbcache

直到

SRR11221063.sra SRR11221063.sra.vdbcache

我需要批量将 .sra 和 .vdbcache 移动到其对应名称的文件夹中。有人可以帮忙创建一个批处理脚本来将这两个文件移动到其对应名称的文件夹中吗?

我假设需要一个循环来改变最后 4 位 SRR 数字?

答案1

实际上,最后 5 位数字需要根据您的目的进行调整。如果每个文件夹/文件的开头是,SRR112并且最后五位数字的范围从和1969021063即 SRR11219690 到 SRR11221063。

这是一个示例 Windows 批处理脚本,它将执行将文件复制到其匹配文件夹名称的任务。将此脚本另存为并运行。我会调整此脚本以仅涵盖几个文件夹编号,以确保它在对每个文件运行之前按预期工作。例如,要调整范围,请将循环copySRR.bat中的值从更改为。for(19690, 1, 21063)(19690, 1, 19691)

带有注释的行REM用于阐明每个部分的作用。

您需要修改source_dir包含 SRR 文件和文件夹的路径。此脚本假定 SRR 文件与 SRR 文件夹位于同一路径中。

@echo off
setlocal enabledelayedexpansion

REM Set the source directory where the .sra and .vdbcache files are located
set "source_dir=C:\Path\To\Your\Source\Directory"

REM Set the base name for the folders (e.g., SRR112)
set "base_name=SRR112"

REM Loop through the range of folder numbers
for /l %%i in (19690, 1, 21063) do (
    REM Generate the full SRR number by appending the current number to the base_name
    set "srr_number=!base_name!%%i"

    REM Check if the folder exists before moving the files
    if exist "%source_dir%\!srr_number!\" (
        REM Move .sra and .vdbcache files to the corresponding folder
        move "%source_dir%\!srr_number!.sra" "%source_dir%\!srr_number!\"
        move "%source_dir%\!srr_number!.sra.vdbcache" "%source_dir%\!srr_number!\"
    ) else (
        echo Folder !srr_number! not found.
    )
)

echo All files moved into their corresponding folders.

相关内容