gpt4 book ai didi

windows - 批处理 : How can I copy files to directory based on file name

转载 作者:可可西里 更新时间:2023-11-01 11:45:06 26 4
gpt4 key购买 nike

我有很多文件要为我工作的公司存档。我对批处理脚本有点熟悉,但我不太了解,无法完全理解我想要的东西。

我正在尝试根据文件名的开头将一些文件复制到我们 NAS 上的文件夹中。这些文件是 7z 文件,它们的结构如下所示:

  • 5476 BMW Handlebars -A.7z
  • 5487 Chevy-Imp.7z
  • 5986 本田 Lid-Upper.7z

等等

文件结构是这样的:开头的四个数字是我们公司的工号。在我们的 NAS 上,我们有一个存档目录,其中包含这样的文件夹:

  • _5000-5999
  • _6000-6999

在这些文件夹中,每个文件夹将包含 250 个存档文件。它们的格式如下:

  • _5000-5249
  • _5250-5499
  • _5500-5749
  • _5750-5999

我想创建一个批处理文件,我可以将这些 7z 文件拖到上面,它将读取文件名的前四个数字,并将其复制到我们 NAS 上的正确文件夹中。

例如文件:

  • 5476 BMW Handlebars -A.7z
  • 5487 Chevy-Imp.7z

会复制到

\nas01\存档\_5000-5999\_5250-5499

我弄乱的主要代码是这样的:

@echo off 
for /f "delims=" %%i in ('dir /b /a-d *.7z') do (
set "filename1=%%~i"
setlocal enabledelayedexpansion
set "folder1=!filename1:~0,4!"
mkdir "!folder1!" 2>nul
copy "!filename1!" "!folder1!" >nul
)

这条线对我不起作用:

set "folder1=!filename1:~0,4!"

如何创建某种变量来检查文件名、在必要时创建文件夹并将其复制到正确的文件夹?我将不胜感激!

-达斯汀

最佳答案

多亏了评论者的帮助,我才弄明白了。我对如何构建脚本有疑问,但我明白了!

@echo off
for /f "delims=" %%i in ('dir /b /a-d *.7z') do (
set "filename=%%~i"
setlocal enabledelayedexpansion
set "folder1=!filename:~0,4!"
set "subfolder1=_!folder1:~0,1!000-!folder1:~0,1!999"
set "firstdigit=!filename:~0,1!"
set "parent=\\nas01\The_Archives"

REM CONDITIONAL STATEMENTS
IF !folder1! GEQ !firstdigit!000 IF !folder1! LEQ !firstdigit!249 SET "subfolder2=_!firstdigit!000-!firstdigit!249"
IF !folder1! GEQ !firstdigit!250 IF !folder1! LEQ !firstdigit!499 SET "subfolder2=_!firstdigit!250-!firstdigit!499"
IF !folder1! GEQ !firstdigit!500 IF !folder1! LEQ !firstdigit!749 SET "subfolder2=_!firstdigit!500-!firstdigit!749"
IF !folder1! GEQ !firstdigit!750 IF !folder1! LEQ !firstdigit!999 SET "subfolder2=_!firstdigit!750-!firstdigit!999"

mkdir "!parent!\!subfolder1!\!subfolder2!" 2>nul
copy "!filename!" "!parent!\!subfolder1!\!subfolder2!" >nul
)

我今天了解了更多关于 Batch 的知识,所以这一天过得很充实!

有没有办法让我可以将其设置为您只需单击并将文件拖到此批处理脚本中,而不是抓取文件夹中的所有 7z 文件?

关于windows - 批处理 : How can I copy files to directory based on file name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47700300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com