如何在cmd中读取多个文件的前2个字符
How to read the 2 first chars of multiple files in cmd
在工作中,我需要创建一个 .bat 脚本来读取多个文件第一行的前 2 个字符,然后将它们回显到屏幕上。
到目前为止我有这个:
@echo off
setlocal enabledelayedexpansion
for /r I:\Test\Filer %%F in (*.*) do (
set first2 =<%%F
set first2=%first2:~0,2%
echo %first2%
)
但它只写了:ECHO is off
有人知道我做错了什么吗?
@echo off
setlocal enabledelayedexpansion
for /r I:\Test\Filer %%F in (*.*) do (
set /p first2=<%%F
set "first2=!first2:~0,2!"
echo(!first2!
)
在delayedexpansion
模式下,%var%
是var
在解析时的值,!var!
是运行时的值。
回显中的 (
将确保在未设置 var
时显示换行符(或 "set" 为零长度字符串)
set 语句中的引号确保尾随 space 不包含在分配给变量的值中。
注意字符串"set"语句中变量名后面不允许有space;名称中带有尾随 space 的变量将被设置,这与名称中没有 space 的变量不同。
set /p
需要从文件中赋值。小心零长度文件和开头包含换行符 (CR LF) 的文件!
Delayed Expansion会导致变量在执行时而不是在解析时被扩展,这个选项用SETLOCAL
命令打开。当延迟扩展生效时,可以使用 !variable_name!
引用变量(除了正常的 %variable_name%
)
@echo off
setlocal enableextensions enabledelayedexpansion
for /r I:\Test\Filer %%F in (*.*) do (
set /p first2=<"%%~F"
set "first2=!first2:~0,2!"
echo !first2!
)
这里在 set /p first2=<"%%~F"
中使用双引号 "%%~F"
(对于路径或文件名包含例如 space 的情况)和 ~
修饰符(以避免重复双引号)
资源:
你错过了/p!这应该有效:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /r I:\Test\Filer %%F in (*.*) do (
SET /p first2=<%%F
SET first2=!content:~0,2!
ECHO !first2!
)
PAUSE
在工作中,我需要创建一个 .bat 脚本来读取多个文件第一行的前 2 个字符,然后将它们回显到屏幕上。
到目前为止我有这个:
@echo off
setlocal enabledelayedexpansion
for /r I:\Test\Filer %%F in (*.*) do (
set first2 =<%%F
set first2=%first2:~0,2%
echo %first2%
)
但它只写了:ECHO is off
有人知道我做错了什么吗?
@echo off
setlocal enabledelayedexpansion
for /r I:\Test\Filer %%F in (*.*) do (
set /p first2=<%%F
set "first2=!first2:~0,2!"
echo(!first2!
)
在delayedexpansion
模式下,%var%
是var
在解析时的值,!var!
是运行时的值。
回显中的 (
将确保在未设置 var
时显示换行符(或 "set" 为零长度字符串)
set 语句中的引号确保尾随 space 不包含在分配给变量的值中。
注意字符串"set"语句中变量名后面不允许有space;名称中带有尾随 space 的变量将被设置,这与名称中没有 space 的变量不同。
set /p
需要从文件中赋值。小心零长度文件和开头包含换行符 (CR LF) 的文件!
Delayed Expansion会导致变量在执行时而不是在解析时被扩展,这个选项用SETLOCAL
命令打开。当延迟扩展生效时,可以使用 !variable_name!
引用变量(除了正常的 %variable_name%
)
@echo off
setlocal enableextensions enabledelayedexpansion
for /r I:\Test\Filer %%F in (*.*) do (
set /p first2=<"%%~F"
set "first2=!first2:~0,2!"
echo !first2!
)
这里在 set /p first2=<"%%~F"
中使用双引号 "%%~F"
(对于路径或文件名包含例如 space 的情况)和 ~
修饰符(以避免重复双引号)
资源:
你错过了/p!这应该有效:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /r I:\Test\Filer %%F in (*.*) do (
SET /p first2=<%%F
SET first2=!content:~0,2!
ECHO !first2!
)
PAUSE