bat根据txt文件for循环生成文件夹,txt包含特殊符号、
时间: 2023-08-21 13:04:15 浏览: 144
如果你的 txt 文件中包含特殊符号或者空格,可以使用双引号将文件名括起来,以避免出现问题。下面是一个示例代码:
```
@echo off
for /f "usebackq delims=" %%a in ("file names.txt") do (
mkdir "%%a"
)
```
其中,`usebackq` 选项可以让 `for /f` 命令以引号括起来的文件名作为输入,而不是作为普通的字符串。`delims=` 则表示不使用任何分隔符,默认情况下 `for /f` 命令会以空格、制表符和换行符作为分隔符。最后,`%%a` 表示遍历到的当前文件名。在 `mkdir` 命令中,我们将文件名用双引号括起来,以避免特殊符号或空格导致的问题。
相关问题
bat根据txt文件for循环生成文件夹,txt包含特殊符号、指定字符集
可以使用以下bat脚本来实现:
```batch
@echo off
setlocal enabledelayedexpansion
set "filename=file.txt" REM 替换为txt文件的路径
set "encoding=utf-8" REM 替换为txt文件的字符集
for /f "usebackq delims=" %%a in (`type "%filename%" ^| chcp 65001 ^| find /v ""`) do (
REM 处理特殊符号,将%%a中的特殊符号替换为下划线
set "foldername=%%a"
set "foldername=!foldername:~0,128!" REM 截取最大128个字符
set "foldername=!foldername:?=_!"
set "foldername=!foldername:^=^_!"
set "foldername=!foldername:<=_!"
set "foldername=!foldername:>=_!"
set "foldername=!foldername:/=_!"
set "foldername=!foldername:\=_!"
set "foldername=!foldername:|=_!"
set "foldername=!foldername:"=!"
set "foldername=!foldername:*=!"
set "foldername=!foldername:%%=!"
set "foldername=!foldername:?=!"
REM 创建文件夹
md "!foldername!" 2>nul
REM 将文件夹的字符集设置为指定的字符集
chcp 65001>nul
set "foldername=!foldername!"
chcp !encoding!>nul
)
```
在脚本中,我们首先读取了txt文件的内容,然后针对每一行内容进行处理。对于特殊符号,我们使用了一系列替换操作,将特殊符号替换为下划线。然后使用md命令创建文件夹,并使用chcp命令将文件夹的字符集设置为指定的字符集。
bat根据txt文件for循环生成文件夹,指定字符集,txt包含特殊符号、
可以使用以下代码实现:
```batch
@echo off
setlocal enabledelayedexpansion
set "charset=utf-8" REM 指定字符集
set "folder_prefix=Folder" REM 文件夹前缀
for /f "usebackq delims=" %%a in ("file.txt") do (
set "filename=%%~a"
set "filename=!filename:/=_!" REM 替换文件名中的斜杆为下划线
set "filename=!filename:\=_!" REM 替换文件名中的反斜杆为下划线
set "filename=!filename:^=^!" REM 转义文件名中的脱字符
mkdir "%folder_prefix%_!filename!" >nul 2>&1
chcp 65001 >nul 2>&1 REM 设置字符集
echo. > "%folder_prefix%_!filename!\test.txt"
)
endlocal
```
以上代码会读取名为 `file.txt` 的文本文件,每行作为一个文件夹名称创建一个以 `Folder_` 开头的文件夹,并在其中创建一个名为 `test.txt` 的空文件。如果文件名中包含特殊字符,会进行相应的转义处理。最后会将字符集设置为 `utf-8`。
阅读全文