Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在bat中使用文件_Windows_Templates_For Loop_Batch File - Fatal编程技术网

Windows 在bat中使用文件

Windows 在bat中使用文件,windows,templates,for-loop,batch-file,Windows,Templates,For Loop,Batch File,我必须使用给定的模板显示文件名。我编写了以下代码: if "%2" == "" ( echo "Missing second argument!" set /p FileName="Input file name template ('*', '?' are allowed): " set /p FileType="Input file type ('text', 'bat', 'all' only): " if FileType == "all" (set

我必须使用给定的模板显示文件名。我编写了以下代码:

if "%2" == ""  (
    echo "Missing second argument!"
    set /p FileName="Input file name template ('*', '?' are allowed): "
    set /p FileType="Input file type ('text', 'bat', 'all' only): "

    if FileType == "all" (set FileType = "*")
) else (
    set FileType="%2"
)


echo %DirSearch%\%FileName%.%FileType%

for %%i in (%DirSearch%\%FileName%.%FileType%) do  (echo "Thats it: %%i")
如果第二个参数为空,我会询问用户关于文件名模板、扩展名(如果它等于'all',我会将它的值重写为'*'

现在的第一个问题是它没有被重写。当我把'all'设置为'*'后,'FileType'仍然是'all'。为什么

echo显示:

"C:\Folder"\test.all
"Thats it: "C:\Folder"\test.all"
如何将其解释为单个值并在
中用于


新代码:

if "%2" == ""  (
        ...
    if "%FileType%" == "all" (set FileType=*)
) else (
        ...
)

set result=%DirSearch%\%FileName%.%FileType%
echo %result%

for %%i in (%result%) do  (echo "Thats it: %%i")


// echo %result%:
"C:\Data\test"\test.all
// in for cycle
"Thats it: "C:\Data\test"\test.all"

正确的字符串应该是:“C:\Data\test\test.all”

您没有以正确的方式测试
文件类型的值。此外,您没有以正确的方式设置新值。代码应为

if "%FileType%" == "all" (set FileType=*)
否则,您只是比较字符串“FileType”和“all”,这当然永远不会成功


旁白:设置
DirSearch
的代码中似乎也有一些错误;后面还有一个不应该出现的双引号。

如果仍然是“全部”,则不会重写
FileType
。@Ockonal:结果是
=
周围也必须没有空格,我相应地编辑了答案。Also、 设置值时,不需要在值周围加引号。好的,谢谢,现在它将替换它。但是如何为
循环生成正确的字符串?@Ockonal:请编辑问题并澄清“正确字符串”的含义.我已经说过那里有一个额外的引号,但你没有显示放入其中的代码。嗯,
DirSearch
是用“%~f1”表示的,可能不是字符串