Windows 在记事本+;中打开同名文件的批处理命令+;

Windows 在记事本+;中打开同名文件的批处理命令+;,windows,batch-file,Windows,Batch File,我想打开Notepad++中名为“asdf.txt”的所有文件,这些文件位于批处理文件所在目录的所有子文件夹中 此处找到的解决方案适用于文件类型,但不能转换为精确的文件名: 以下是我的尝试: FOR /R %%a IN (asdf.txt) DO "C:\Program Files (x86)\Notepad++\notepad++.exe" "%%a" 这导致Notepad++声明asdf.txt不存在,我想创建它。它继续向我询问存在的每个子文件夹(可能有数百次)。如果我说是,那么它会在每

我想打开Notepad++中名为“asdf.txt”的所有文件,这些文件位于批处理文件所在目录的所有子文件夹中

此处找到的解决方案适用于文件类型,但不能转换为精确的文件名:

以下是我的尝试:

FOR /R %%a IN (asdf.txt) DO "C:\Program Files (x86)\Notepad++\notepad++.exe" "%%a"

这导致Notepad++声明asdf.txt不存在,我想创建它。它继续向我询问存在的每个子文件夹(可能有数百次)。如果我说是,那么它会在每个子文件夹中创建文件asdf.txt。如果我一直按yes/no,那么它最终会打开现有文件。但是,我想要的是以完全相同的名称打开所有现有文件,而不是创建新文件。

您的文件名不包含任何通配符,因此它被视为字符串,而不是文件掩码。
添加通配符:

 FOR /R %%a IN ("asdf.txt?") DO "C:\Program Files (x86)\Notepad++\notepad++.exe" "%%a"
或使用:

FOR /F "delims=" %%a IN ('dir /s /b /a-d "asdf.txt"') DO "C:\Program Files (x86)\Notepad++\notepad++.exe" "%%a"

您的文件名不包含任何通配符,因此它被视为字符串,而不是文件掩码。
添加通配符:

 FOR /R %%a IN ("asdf.txt?") DO "C:\Program Files (x86)\Notepad++\notepad++.exe" "%%a"
或使用:

FOR /F "delims=" %%a IN ('dir /s /b /a-d "asdf.txt"') DO "C:\Program Files (x86)\Notepad++\notepad++.exe" "%%a"

您还可以使用
Where
命令:

@For/F“Delims=“%%A In('Where/R asdf.txt')Do@Start”“%ProgramFiles(x86)%\Notepad++\Notepad++.exe”“%%A”

更改为特定的源目录(在当前目录中使用点)。当然,您可以删除
Start”“
命令,如果它不符合您的特定要求

您也可以使用
Where
命令:

@For/F“Delims=“%%A In('Where/R asdf.txt')Do@Start”“%ProgramFiles(x86)%\Notepad++\Notepad++.exe”“%%A”

更改为特定的源目录(在当前目录中使用点)。当然,如果
Start”“
命令不符合您的特定要求,您可以将其删除

谢谢。第二个解决方案非常有效。第一个解决方案只打开了一个asdf.txt文件(然后在notepad++关闭并再次打开后打开第二个文件)。谢谢。第二个解决方案非常有效。第一个解决方案只打开了一个asdf.txt文件(然后在notepad++关闭并再次打开后打开第二个)。