批处理:命令提示符有效,但file.cmd和file.bat都不起作用

我是新来的。我在网站上工作,有一个名为web的文件夹,在此文件夹中,有许多子目录,例如“ template1”,“ template2”等。在这些模板中,有一个共同点,每个仅包含三个相同的东西文件,“ draw.html”,“ draw.js”,“ draw.css”。每次我想创建一个新页面时,都需要手动创建此模式。我想知道是否可以编写批处理文件,因此可以通过单击pat.bat来执行此操作,它会为我生成该文件夹和三个文件。经过思考,我决定执行以下操作:在Web文件夹中,创建两个文件:在Pat.txt中的['pat.bat','pat.txt'],用行分隔三个字符串:[draw.html, [draw.js,draw.css],批处理文件中的逻辑非常简单:它要求用户输入目录名称,然后生成

directory_name
           |-draw.js
           |-draw.html
           |-draw.css

here's the batch file I worked out <pat.bat>

@echo off
:dir_loop
    echo Create a directory named: 
    set /p directory=
    if "%directory%" equ "" (
        echo Please enter a valid directory
        goto :dir_loop
        )


:pat_loop
    if not exist pat.txt (
        echo Please create a pat.txt file which
        echo contains all your files separated by 
        echo line with correct extension to 
        echo generate into the folder. 
        echo "Have you done it? (y/n)"
        set /p good=
        if not exist pat.txt (
            echo Sorry, no pat.txt detected in current directory
            goto :pat_loop
        ) 
    )


:final
    mkdir %directory%
    for /F "delims=," %i in (pat.txt) do (
        cd %directory%
        cd. > %i
        cd..
    )

pat.txt

draw.js
draw.css
draw.html

好的,这是一个问题,当我将“目录”变量更改为默认值而不是用户输入,并在Web目录内提升的命令提示符下运行此命令时,它工作正常(以下代码)

@echo off
    :dir_loop
        echo Create a directory named: 
        rem !!! change directory from user input to assignment
        set directory=template1
        if "%directory%" equ "" (
            echo Please enter a valid directory
            goto :dir_loop
            )


    :pat_loop
        if not exist pat.txt (
            echo Please create a pat.txt file which
            echo contains all your files separated by 
            echo line with correct extension to 
            echo generate into the folder. 
            echo "Have you done it? (y/n)"
            set /p good=
            if not exist pat.txt (
                echo Sorry, no pat.txt detected in current directory
                goto :pat_loop
            ) 
        )


    :final
        mkdir %directory%
        for /F "delims=," %i in (pat.txt) do (
            cd %directory%
            cd. > %i
            cd..
        )

but, if I set the variable 'directory' to user input rather than string, when I click on the <pat.bat> file, entry my folder name for example, ak, it creates an ak folder in web with nothing in it. (first <pat.bat> code)

我想这是我的for循环的变量赋值问题,如果您能提供帮助,我将非常高兴。

PS:您只需在桌面上创建一个文件夹,在其中创建两个文件pat.txt,pat.bat并将其粘贴即可测试代码。要测试第二个bat文件,请在该文件夹中键入cmd并粘贴代码(确保首先创建pat.txt)