在子文件夹中创建并保存某些文件类型的列表

时间:2018-11-20 10:20:10

标签: batch-file

我有一个批处理文件,该文件列出了一个文件夹及其子文件夹中的所有.jpg文件。然后,将它们另存为批处理文件所在文件夹中的list.txt。

for /R %%x in (*.jpg) do @echo %%~nx >> List.txt

但是我没有在与批处理文件相同的文件夹中创建list.txt,而是尝试在每个文件夹和子文件夹中创建list.txt,因此list.txt将与以下文件保存在同一文件夹中列出的.jpg文件。

现在做什么:

├── Main Folder
│   ├──batch.bat
│   ├──list.txt < All jpg's from all folders listed in here
│   ├── Image Folder
│   │   ├── 1.jpg
│   │   ├── Image Folder 2
│   │   │   ├── 2.jpg

我要实现的目标:

├── Main Folder
│   ├──batch.bat
│   ├── Folder
│   │   ├── 1.jpg
│   │   ├── list.txt < A list of all jpg's in folder1
│   │   ├── Folder 2
│   │   │   ├── 2.jpg
│   │   │   ├── list.txt < A list of all jpg's in folder2

有人知道我要去哪里吗?

2 个答案:

答案 0 :(得分:2)

通过重定向到文件>> List.txt,您可以有效地重定向到当前的工作目录(您从中启动批处理文件的目录)。

相反,告诉它使用%%~dpx令牌的驱动器/路径:

for /R %%i in (*.jpg) do @echo %%~ni >> %%~dpiList.txt

注意!我将令牌更改为%%i,因为x也用作令牌扩展名%%~xi,它更具可读性,看上去也不太混乱。

答案 1 :(得分:1)

如果总是附加到list.txt文件,则需要首先初始化所有list.txt文件,或者
使用不同的方法:

@Echo off
For /r /D %%A in (*) do If exist "%%~fA\*.jpg" (
    Dir /B "%%~fA\*.jpg" >"%%~fA\List.txt"
)