查找某些文件的扩展名,获取路径,文件复制到路径,在文本文件中
问题描述:
记录路径,我需要能够查找某些文件的扩展名,获取路径,文件复制到路径,在文本文件中
- 搜索目录及其与扩展特定文件的子目录。 ac每个目录只有一个。
- 然后,我需要能够将一些文件复制到其中包含* .ac的目录中。当文件被复制时,它们需要与没有扩展名的* .ac文件具有相同的名称。所以如果* .ac文件是foobar.ac我需要能够将foobarMS.cvw复制到目录。它可以只复制一个文件,但将其重命名为适合目录。
- 一旦完成复制文件,把它保存在一个文本文件,路径
- 这将循环,直到它已通过所有子目录不见了
当我再次运行该脚本,这将是很高兴能够交叉引用已完成目录的列表,因此不必再次复制到它们。或者,如果速度更快,可以忽略交叉引用列表并只复制命令而不覆盖。
我到目前为止,但把它放在一起正在让我悲伤。
我能够通过列出* .AC文件的目录:
for /d /r %%a in (*) do @if exist %%a\*.ac (echo %%a)
这是我到目前为止有:
@echo off
cls
for /D /R %%a in (*) do @if exist "%%a\*.ac" (
if not exist "%%a\%%~Nacb.cvw" (
copy .\jzitfix.cvw "%%a\%%~Nacb.cvw">nul
)
if not exist "%%a\%%~Naia.cvw" (
copy .\jzitfix.cvw "%%a\%%~Naia.cvw">nul
)
if not exist "%%a\%%~Najzcd.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzcd.cvw">nul
)
if not exist "%%a\%%~Najzcpl.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzcpl.cvw">nul
)
if not exist "%%a\%%~Najzlnr.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzlnr.cvw">nul
)
if not exist "%%a\%%~Najzms.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzms.cvw">nul
)
if not exist "%%a\%%~Najzmt.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzmt.cvw">nul
)
if not exist "%%a\%%~Najzmu.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzmu.cvw">nul
)
if not exist "%%a\%%~Najzmv.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzmv.cvw">nul
)
if not exist "%%a\%%~Najzmw.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzmw.cvw">nul
)
if not exist "%%a\%%~Nalt.cvw" (
copy .\jzitfix.cvw "%%a\%%~Nalt.cvw">nul
)
if not exist "%%a\%%~Nams.cvw" (
copy .\jzitfix.cvw "%%a\%%~Nams.cvw">nul
)
if not exist "%%a\%%~Namt.cvw" (
copy .\jzitfix.cvw "%%a\%%~Namt.cvw">nul
)
if not exist "%%a\%%~Namu.cvw" (
copy .\jzitfix.cvw "%%a\%%~Namu.cvw">nul
)
if not exist "%%a\%%~Namv.cvw" (
copy .\jzitfix.cvw "%%a\%%~Namv.cvw">nul
)
if not exist "%%a\%%~Namw.cvw" (
copy .\jzitfix.cvw "%%a\%%~Namw.cvw">nul
)
if not exist "%%a\fixed" (
copy .\jzitfix.cvw "%%a\fixed">nul
echo FIXED: %%~Na
echo %%~Na >> fixed.txt
)
)
答
@echo off
rem in the FOR loop %%~Pa is the directory name and %%~Na the file name
for /R %%a in (*.ac) do (
if not exist %%~Pa%%~NaMS.cvw (
copy \fixed\path\%%~NaMS.cvw %%~Pa
echo %%~Pa>> textfile.txt
)
)
附录
对不起,也许我误解了一些观点。根据您的描述第一,我的代码执行以下操作:
FOR与.AC扩展每个路径\文件(例如,“foobar.ac”): 复制具有相同的名称加上“MS”和文件将.cvw扩展名(例如“foobarMS.cvw”)扩展为相同的路径并将该路径保存在文本文件中,但前提是该文件不存在。
我从你的要求中推导出最后一部分(“只有当这个文件不存在”时):“当我再次运行脚本时,它将很好......不必再次复制到它们或者......只是让复制命令不覆盖“)。
你的解释清楚地说:“当文件被复制时,它们需要与没有扩展名的* .ac文件具有相同的名称......”和“复制完文件后,将该路径保存在文本文件中“。所以,我不明白你的第二个例子的多个名字来自哪里。
也许你的第一描述不清,应该是:
- 搜索目录及其子目录与.AC扩展名的特定文件。
- 检查存在一系列扩展名为.cvw的固定名称文件的路径;每个名称都以.ac文件的相同名称开头,后跟其中一个字符串:cb ia ... mw。如果其中一个文件不存在,请将文件\ jzitfix.cvw复制到该路径和名称。
如果是这样的话,那么我不知道什么时候“保存为文本文件路径”:当每个文件被复制(重复每个丢失的文件相同的路径)?或者只是每个路径一次?或者只有至少有一个文件被复制?
批处理文件下面是按照以前的描述修改后的版本:
@echo off
rem in the FOR loop %%~Pa is the directory name and %%~Na the file name
for /R %%a in (*.ac) do (
for %%b in (cb ia etc mw) do (
if not exist %%~Pa%%~Na%%b.cvw (
copy .\jzitfix.cvw %%~Pa%%~Na%%b.cvw > nul
)
)
)
如果这仍然不是你想要的,那么请用更多的细节和你想要的例子解释了!
我会试试这个。 – qroberts
哇这是美丽的。有批量的数组吗?会更好,因为我需要为16个文件做一个副本。 – qroberts
@qroberts:查看我的附录... – Aacini