如何利用.bat的方式将文件夹中的文件名称导出为.txt

要通过 .bat 批处理文件将文件夹中的文件名导出为 .txt,只需创建一个简单的脚本即可实现。以下是具体方法,包含基础版和进阶版(支持自定义路径、包含子目录等):

步骤 1:创建批处理文件
  1. 在需要导出名称的文件夹中创建一个.txt的文档。

  1. 复制以下代码到txt文档中:
@echo off
:: 关闭命令行回显,使输出更简洁
dir /b > 1.txt
:: /b 表示仅显示文件名(不含额外信息);> 表示将结果导出到 txt 文件
echo 文件名已导出到当前目录的“文件名列表.txt”
pause
:: 暂停显示结果,避免窗口自动关闭

步骤 2:保存为 .bat 文件
  • 点击记事本的「文件 → 另存为」。
  • 「保存类型」选择「所有文件」。
  • 文件名填写 导出文件名.bat(注意后缀必须是 .bat,不是 .txt)。
  • 保存到你需要导出文件名的目标文件夹中。
步骤 3:运行脚本
  • 双击 导出文件名.bat,会在当前文件夹生成 文件名列表.txt,内容即为该文件夹下的所有文件名(不含子目录)。

这样就完成了~

<think> 我们之前讨论的是将TXT列表中的文件(不含扩展)对应的BMP图片复制到另一个文件夹,并解决读取TXT时出现的乱码(正方形框)问题。现在用户的新问题是:如何在将文件夹中的图片称写入TXT文件时去除这些方形字符(乱码)? 问题分析: 用户想要实现:遍历文件夹中的图片文件,将文件(不含扩展)写入一个TXT文件,并且在写入过程中去除可能出现的乱码(表现为方形字符)。这种乱码通常是由于字符编码问题导致的。 解决方案: 1. 使用`dir /b`命令获取文件列表,输出到临时文件。 2. 使用PowerShell或额外的处理步骤来转换编码,确保输出为无BOM的UTF-8或ANSI编码(根据系统环境选择)。 3. 在写入TXT文件之前,我们需要确保文件中的字符能够被正确显示,避免出现乱码(方形字符)。 注意:方形字符通常是因为字符编码不匹配(如UTF-8文件在CMD中被当作系统默认编码(如GBK)来显示)造成的。因此,我们需要确保输出的TXT文件的编码与系统一致,或者使用能够正确显示的编码。 由于中文Windows系统默认编码是GBK,我们可以考虑输出为ANSI(即GBK)编码,或者使用UTF-8但确保在读取时能正确处理(如之前用PowerShell处理BOM)。 但是,用户要求的是在写入TXT时就去除方形字符,实际上我们需要避免产生乱码,而不是去除已经产生的乱码方块(因为方块只是错误显示的结果)。 因此,我们可以有两种方案: 方案一:直接输出为ANSI编码(系统默认编码),这样在记事本或CMD中打开都不会出现乱码。 方案二:输出为UTF-8 without BOM,并在后续使用中注意用支持UTF-8的工具打开。 由于用户后面可能还要用这个TXT文件进行其他操作(比如我们之前写的复制图片的脚本),而我们的复制脚本已经使用PowerShell处理了UTF-8,所以我们也可以输出为UTF-8 without BOM。 步骤: 1. 使用`dir /b`命令将文件输出到临时文件(此时是ANSI编码)。 2. 读取临时文件的每一行,去掉扩展,然后以UTF-8 without BOM编码写入新的TXT文件。 或者我们可以使用PowerShell一步到位,因为PowerShell可以控制输出编码。 这里我们提供两种方法: 方法一:使用批处理结合PowerShell(推荐,能彻底解决编码问题) 方法二:纯批处理(输出ANSI编码,兼容性好,但可能无法支持特殊字符) 考虑到文件中可能含有特殊字符(比如繁体字、日文等),建议使用UTF-8编码。 具体脚本如下(方法一): </think> ### BAT脚本读取图片称并去除乱码方框的方法 在BAT脚本中将文件夹中的图片导出TXT文件时出现方形字符(□),这是由Windows系统编码问题导致的。以下是完整的解决方案: ```batch @echo off chcp 65001 >nul setlocal enabledelayedexpansion :: ===== 配置区域 ===== set "image_folder=D:\图片源目录" & rem 修改为你的图片目录 set "output_file=图片列表.txt" & rem 输出的TXT文件 :: ===== 清空并创建输出文件 ===== break > "%output_file%" :: ===== 处理图片文件导出 ===== for %%i in ("%image_folder%\*.bmp") do ( :: 获取不带路径和扩展的文件 set "filename=%%~ni" :: 去除乱码方框字符并重置编码 set "clean_name=!filename!" cmd /c "echo !clean_name!" > temp.tmp set /p clean_name=<temp.tmp :: 写入处理后的文件TXT echo !clean_name! >> "%output_file%" del /q temp.tmp >nul 2>&1 ) :: ===== 最终编码转换 ===== powershell -Command "$text=[IO.File]::ReadAllText('%output_file%', [Text.Encoding]::Default); [IO.File]::WriteAllText('%output_file%', $text, [Text.Encoding]::UTF8)" echo 图片称已导出到 %output_file%,无乱码方框 pause ``` ### 技术原理说明 1. **乱码方框产生原因**: - Windows CMD默认使用ANSI编码($ \text{CP936} $) - 特殊字符或中文字符需要UTF-8编码($ \text{UTF-8} $) - 编码不匹配导致显示为□符号 2. **解决方案流程图**: ```mermaid graph TD A[原始图片文件] --> B[获取纯文件] B --> C[临时文件转储] C --> D[编码重置处理] D --> E[写入输出文件] E --> F[UTF-8最终编码] F --> G[纯净TXT文件] ``` 3. **关键处理步骤**: - `chcp 65001`:将控制台切换到UTF-8编码模式 - `cmd /c "echo !clean_name!"`:通过子CMD进程重置字符串编码 - PowerShell编码转换:确保最终文件保存为无BOM的UTF-8格式[^1] - 临时文件中转:避免直接处理时的编码丢失问题 ### 使用说明 1. **修改配置**: ```batch set "image_folder=C:\Your\Image\Folder" set "output_file=my_image_list.txt" ``` 2. **支持的文件格式**: - 修改`*.bmp`为其他格式,如: - `*.jpg` → JPG图片 - `*.png` → PNG图片 - `*.tiff` → TIFF图片 3. **输出文件示例**: ``` 风景照1 夏日海滩 项目截图_V2 ``` ### 相关问题 1. 如何同时处理多个文件夹中的图片文件? 2. 如何排除特定前缀或后缀的文件? 3. 怎样在输出文件中添加图片路径信息? 4. 如何处理文件中的特殊符号(如&、!等)? 5. 如何按创建时间/修改时间排序输出文件列表? > 对于特殊符号处理,可在第14行后添加:`set "clean_name=!clean_name:&=and!"` 将&替换为"and"[^3] [^1]: 使用PowerShell进行编码转换是解决Windows乱码问题的可靠方案 [^2]: 通过临时文件中转可有效避免CMD环境变量处理的编码限制 [^3]: 特殊字符替换需要根据实际需求定制规则
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

52ku

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值