需要一个脚本来根据文件名创建文件夹,并自动移动文件

问题描述 投票:0回答:2

我需要一个可以运行的批处理文件(适用于 Windows),它将需要(非常)大量的文件,并将它们放在自己的文件夹中。

源目录结构如下:

\\Movies\Movie1.mkv
\\Movies\Movie1.idx
\\Movies\Movie1.sub
\\Movies\Movie1.jpg
\\Movies\Movie1.mkv_sheet.jpg

\\Movies\Movie2.mkv
\\Movies\Movie2.idx
\\Movies\Movie2.sub

\\Movies\Movie3.mkv
\\Movies\Movie3.idx
\\Movies\Movie3.sub

我需要它根据 mkv 文件名创建一个文件夹,然后将 Movie*.* 移动到该文件夹中,如下所示:

\\Movies\Movie1\Movie1.mkv
\\Movies\Movie1\Movie1.idx
\\Movies\Movie1\Movie1.sub
\\Movies\Movie1\Movie1.jpg
\\Movies\Movie1\Movie1.mkv_sheet.jpg

\\Movies\Movie2\Movie2.mkv
\\Movies\Movie2\Movie2.idx
\\Movies\Movie2\Movie2.sub
loops batch-file
2个回答
2
投票

编辑为使用评论中指定的路径

@echo off
pushd D:\Video
for %%F in (*.mkv) do (
  2>nul md "%%~nF"
  >nul move /y "%%~nF*.*" "%%~nF"
)
popd

0
投票

任何在 Linux / MacOS 上寻找相同东西的人,这应该可以完成工作:

#!/bin/bash

# Specify the source folder
source_folder="/path/to/source/folder"

# Check if the source folder exists
if [ ! -d "$source_folder" ]; then
  echo "Source folder does not exist."
  exit 1
fi

# Move to the source folder
cd "$source_folder" || exit 1

# Iterate through each file in the source folder
for file in *; do
  # Check if it's a file, not a directory
  if [ -f "$file" ]; then
    # Extract the file name without extension
    file_name="${file%.*}"
    
    # Create a new folder with a unique identifier
    folder_name="$file_name"
    mkdir -p "$folder_name"
    
    # Move the file into the new folder
    mv "$file" "$folder_name/"
    
    echo "Moved $file to $folder_name/"
  fi
done

echo "Organizing files complete."

确保将文件顶部的

source_folder="/path/to/source/folder"
更改为您要操作的文件夹。我已经在 MacOS 上测试了这一点,文件夹指向 NAS 上已安装的网络卷,它工作没有问题。

在 MacOS 上,如果挂载网络文件夹,您可以在 /Volumes 文件夹下找到路径。

© www.soinside.com 2019 - 2024. All rights reserved.