File 批处理:输出文件名以及文件的相对路径和附加符号

File 批处理:输出文件名以及文件的相对路径和附加符号,file,batch-file,path,relative-path,names,File,Batch File,Path,Relative Path,Names,我的文件夹结构如下: c:/foo/bar1/a002345.vi c:/foo/bar1/somefilename.vi c:/foo/bar2/b005632.vi c:/foo/bar26/z002345.vi 现在,我想在文件夹c:/foo/中执行一个批处理文件,该文件将以下输出写入.txt文件: @@/bar1/a002345.vi @@/bar2/b005632.vi @@/bar26/z002345.vi (没有somefile.vi)最优雅的方式是什么?您能否指定如何区分

我的文件夹结构如下:

  • c:/foo/bar1/a002345.vi
  • c:/foo/bar1/somefilename.vi
  • c:/foo/bar2/b005632.vi
  • c:/foo/bar26/z002345.vi
现在,我想在文件夹c:/foo/中执行一个批处理文件,该文件将以下输出写入.txt文件:

@@/bar1/a002345.vi
@@/bar2/b005632.vi
@@/bar26/z002345.vi

(没有somefile.vi)最优雅的方式是什么?

您能否指定如何区分“somefile.vi”,它是否包含任何数字,或者您知道它的单独名称

如果是后者,我相信如果从C:\foo文件夹运行,这应该可以工作

for /r %%a in (*) do (if %%~na NEQ somefile echo %%~pa%%~na%%~xa >> output.txt)
注意,您将获得“\foo\bar…”而不是“@@\bar…” 如果有多个文件要排除简单嵌套,请执行以下命令:

for /r %%a in (*) do (if %%~na NEQ somefile1 if %%~na NEQ somefile2 if %%~na NEQ somefile3 echo %%~pa%%~na%%~xa >> output.txt)
等等。。。。 我在我的电脑上试过,效果很好


您的Mona

您可以使用带有/v开关的
find
findstr
来过滤文件名。谢谢,这对我也很有用,并且节省了我很多时间!但有时我会有更多的文件,比如'somefile.vi'。它们可以是多个文件,但它们的文件名中从不包含数字。你也有解决这个问题的办法吗?就像只对数字使用通配符一样?就我在批处理脚本编写方面的知识而言,没有只对数字使用通配符的方法,因为处理数字的每个单词的唯一方法是如果它们位于单独的行上,我唯一能建议的是创建一个小脚本,显示文件名,并请求输入,如“y”或“n”,并根据输入决定是否应将路径+名称+扩展名回显到output.txt中