如果第一个字符匹配列表,则需要移动文件夹和内容

时间:2013-08-18 18:09:58

标签: windows batch-file

我一直在使用一个很棒的小批量FOR循环来做一些繁琐的步骤,并希望修改它以做更多,但无法在任何示例中找到正确的方法。

以下是我现在所拥有的:

  

for / f“delims = *”%% i in(Move_Test.txt)确实移动   “E:\ 07-All_Books \ %% i”E:\ 08-SF_Books \> nul 2>& 1

我希望这种格式化有意义,但它确实有效。无论如何,文件“Move_Test.txt”包含作者姓名列表。该循环扫描“07-All_Books”目录并在该目录中查找匹配的文件夹名称。如果找到匹配项,则会将该文件夹移动到“08-SF_Books目录。

我需要做的是将其修改为类似的东西,但要进行单个字符比较。

文件“Move_Test.txt”现在只有字母A-Z,每行一个字母。

我希望循环:

  1. 阅读“Move_Test”文件中的每一行,并比较“All_Books”目录中仅限第一个字母的文件夹。
  2. 如果找到匹配项,则该匹配文件夹将被移动到具有26个AZ文件夹的目录,其名称结构为“作者 - A”,“作者 - B”,依此类推至Z.所以,如果匹配找到第一个字母“B”,该文件夹将被移动到“作者 - B”目录中,依此类推。
  3. 我坚持做第一个字母的比较(大写或小写),然后把那个字母变量放到正确的移动文件夹中。

    而且,如果有一种更简洁的方法来消除“Move_Test”文本文件,我当然也对此持开放态度。

2 个答案:

答案 0 :(得分:0)

要检查第一个字母是否匹配,请将文件恢复为:

[letter]*

或者:

%%i*

对于你的情况。通配符*将使程序在您提出的字母后查找每个字符。所以就你的代码而言:

for /f "delims=*" %%i in (Move_Test.txt) do move "E:\07-All_Books\%%i*" E:\08-SF_Books\ >nul 2>&1

另外,如果每行只有一个字符,我认为你不需要`“delims = *”。莫纳

答案 1 :(得分:0)

@ECHO OFF &SETLOCAL
FOR %%A IN (
    A B C D E F
      G H I J
      K L M N
      O P Q R
      S T U V
      W X Y Z
      ) DO (
ECHO MOVE "E:\07-All_Books\%%A*" "E:\08-SF_Books\Authors - %%A"
)

如果输出看起来不错,请删除echo