我正在编写一个简单的批处理文件来创建新的用户定义文件。 我的问题是如何接受带有或不带句点的扩展的输入,而不是产生一个双周期(即name1..txt)。 我还想避免打印包含/不包含它的说明。谢谢你的帮助!
我的方法如下。我想在"扩展"的开头寻找一段时间。变量,ext,并运行适当的FOR循环来创建文件。
setlocal enabledelayedexpansion
set num=
set name=
set ext=
:setnum
set /P "num=Number of files to create?: "
If not defined num Echo.&Echo You must enter a number to continue...&goto:setnum
:setname
set /P "name=Enter "root" name of file:"
If not defined name echo.&Echo You must enter the name of your new files to continue...&goto:setname
:setext
set /P "ext=What will be the file extension?:"
If not defined ext echo.&Echo You must enter an extension to continue...&goto:setext
pause
%ext:~0,1% | FINDSTR /R "[.]" && pause & goto:extNoDot
%ext:~0,1% | FINDSTR /R "[.]" || pause & goto:extYesDot
:extNoDot
for /L %%a in (1,1,%num%) do (echo %%a >> !name!%%a%ext%)
goto:eof
:extYesdot
for /L %%a in (1,1,%num%) do (echo %%a >> !name!%%a.%ext%)
goto:eof
:eof
EXIT /b
答案 0 :(得分:1)
您实际上并未说明当前代码的错误。没有测试,我可以看到这两行必须给你带来问题:
%ext:~0,1% | FINDSTR /R "[.]" && pause & goto:extNoDot
%ext:~0,1% | FINDSTR /R "[.]" || pause & goto:extYesDot
这是因为你在行的开头有%ext:~0,1%
,好像它是一个命令。您似乎要尝试将这些内容传递给FINDSTR
命令。因此,你需要回应它们:
echo %ext:~0,1% | FINDSTR /R "[.]" && pause & goto:extNoDot
echo %ext:~0,1% | FINDSTR /R "[.]" || pause & goto:extYesDot
然而,在这里使用外部命令是过度的。您应该执行以下操作:
rem Remove any optional dot at the start
if "%ext:~0,1%" == "." set "ext=%ext:~1%"
然后继续执行,好像ext
首先没有点(不需要单独的nodot
和yesdot
标签)。