-1

我一直在使用一个很棒的小批量 FOR 循环来执行一些繁琐的步骤,并且想对其进行修改以做更多的事情,但找不到在任何示例中使用的正确方法。

这是我现在拥有的:

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

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

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

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

我希望循环:

  1. 读取“Move_Test”文件中的每一行,并仅比较“All_Books”目录中文件夹的首字母
  2. 如果找到匹配项,则该匹配文件夹将移动到具有 26 个 AZ 文件夹的目录,其名称结构为“作者 - A”、“作者 - B”等,一直到 Z。因此,如果第一个匹配找到字母“B”,该文件夹将移动到目录“Authors - B”,依此类推。

我坚持只比较第一个字母(大写或小写),然后将该字母变量放入正确的移动到文件夹中。

而且,如果有一种更简洁的方法来消除“Move_Test”文本文件,我当然也愿意接受。

4

2 回答 2

0

To check if the first letter matchs, reffer to the files as:

[letter]*

Or:

%%i*

For your case. The wildcard * would make the program look for every character after the letter you put forward. So in terms of your code:

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

Also, I don't think you require the `"delims=*" if there is only one character per line. Mona

于 2013-08-19T00:48:08.927 回答
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如果输出看起来不错,请删除。

于 2013-08-19T05:39:47.223 回答