Batch file 从命令提示符读取批处理文件

Batch file 从命令提示符读取批处理文件,batch-file,Batch File,各位,我需要解决一个问题 我需要像这样写入命令提示符 С:>convert.bat“Aoäiaõe uue oaõieaiaõueauaöau” 脚本需要向用户显示我在那里写入的字符串 如何执行此操作?批处理文件中的运行时参数由%1、%2…管理 这意味着,如果在批处理文件中访问%1,则可以传入第一个参数 欢迎光临。蝙蝠: @echo Hello, %1 运行welcome.bat“World”将给出以下输出: Hello, World. @Santhosh J的答案与&,“,|等参数有关,但

各位,我需要解决一个问题

我需要像这样写入命令提示符

С:>convert.bat“Aoäiaõe uue oaõieaiaõueauaöau”

脚本需要向用户显示我在那里写入的字符串


如何执行此操作?

批处理文件中的运行时参数由%1、%2…管理

这意味着,如果在批处理文件中访问%1,则可以传入第一个参数

欢迎光临。蝙蝠:

@echo Hello, %1
运行
welcome.bat“World”
将给出以下输出:

Hello, World.

@Santhosh J的答案与
&
|
等参数有关,但这一个没有

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

::Redirect to file
>args.tmp (
SETLOCAL DISABLEEXTENSIONS
prompt #
@echo on
FOR %%a in (%%a) do REM # %1#
@echo off
ENDLOCAL
)

::Read file using SET /P
<args.tmp (
set /p arg=
set /p arg=
)

::Delete temp file
del /f /q args.tmp

::Trim prompt and surrounding #s
set "arg=!arg:~7,-2!"

::Print
ECHO(!arg!
ENDLOCAL
@echo关闭
SETLOCAL ENABLEDELAYEDEXPANSION
::重定向到文件
>args.tmp(
setLocalDisableExtensions
提示#
@呼应
对于%%a英寸(%%a)进行REM#%1#
@回音
端部
)
::使用SET/P读取文件

setlocaldisableextensions
禁用修改器,如
%%~dpa

对于%%a in(%%a)do…

  • 将变量
    %%a
    替换为字符串
    %%a
  • 当启用
    ECHO
    时,回显
  • REM#%1
    保护它免受
    /?


    最后,
    SET/p
    提供了一种可靠的读取文件的方法。

    1)输出将是
    Hello,“World”
    。2)只有9个命名参数
    %1
    %9
    %11
    被翻译成
    %1
    ,并附加一个文本
    1
    (出于好奇:您从哪里获得
    255
    的?我刚刚获得了4095个参数,但这里的限制因素只是最大行长度)。(要访问更多参数,需要使用命令)感谢您的更正,我对答案进行了编辑,以反映这一点。它不适用于大多数有毒字符,但+1。改进此答案的建议是使用
    DELAYEDEXPANSION
    ECHO ON
    REM
    将管道连接到文件,并使用
    SET/P
    读取文件。此外,使用
    ECHO(
    )。