Batch file 如何使用条件复制将jpg文件转发到特定扩展名和特定数据库的人来改进批处理文件?
我用以下代码创建了一个.bat文件,以便将一个随机文件从目录a-POOL文件夹复制到目录B-FOLDER(具有固定的文件名video.mp4)。因此,在目录A中有一个.mp4文件池,在目录B中有一个文件video.mp4(名称相同,但每次执行批处理文件时视频不同) 这是一个代码谁做这件事。它非常有效Batch file 如何使用条件复制将jpg文件转发到特定扩展名和特定数据库的人来改进批处理文件?,batch-file,Batch File,我用以下代码创建了一个.bat文件,以便将一个随机文件从目录a-POOL文件夹复制到目录B-FOLDER(具有固定的文件名video.mp4)。因此,在目录A中有一个.mp4文件池,在目录B中有一个文件video.mp4(名称相同,但每次执行批处理文件时视频不同) 这是一个代码谁做这件事。它非常有效 @echo off setlocal EnableDelayedExpansion cd C:\Users\aless\Desktop\example\A-POOL set
@echo off
setlocal EnableDelayedExpansion
cd C:\Users\aless\Desktop\example\A-POOL
set n=0
for %%f in (*.*) do (
set /A n+=1
set "file[!n!]=%%f"
)
for /L %%i in (1,1,%time:~-1%) do set "dummy=!random!"
set /A "rand=(n*%random%)/32768+1"
copy "!file[%rand%]!" C:\Users\aless\Desktop\example\B-FOLDER\video.mp4
FOR %%G IN ("!file[%rand%]!") DO >"C:\Users\aless\Desktop\example\B-FOLDER\title.txt" ECHO %%~nG
现在的问题(与上次不同):
在A-POOL目录中,我有很多.mp4文件。我手动更改了每个文件的.mp4扩展名,其中包含一个表示食物的代码
例如:Filename.pizza、Filename2.pizza、Filename.意大利面、Filename200.意大利面、Filename.cheeseburger等
我创建了另一个名为“FOOD-DATABASE”(在C:\Users\ales\Desktop\FOOD-DATABASE
中)的文件夹,其中包含一个大型的图像数据库,位于食品的.jpg
扩展中。食品数据库的文件名等于A-POOL
文件夹中包含的文件的文件扩展名
食品数据库文件夹的内容:
(意大利面、比萨饼、奶酪汉堡等)
因此,我需要在代码中添加一个字符串/条件,执行e命令,并说:
如果拾取的随机文件具有扩展名.pizza,请将pizza.jpg从C:\Users\aless\Desktop\FOOD-DATABASE复制到C:\Users\aless\Desktop\B-FOLDER\FOOD.jpg(固定名称文件)
事实上,我不想为每种食物添加这个字符串。。。代码字符串必须读取所选随机文件的扩展名,并从C:\Users\aless\Desktop\FOOD-DATABASE复制到C:\Users\aless\Desktop…B FOLDER\FOOD.JPG(固定名称文件),将同名文件复制到随机文件的扩展名
真是一团糟。。。我知道;)谢谢你的帮助 如评论中所述,我们知道一个文件的扩展名是另一个文件的名称。因此,这些变量展开式很重要:
%%~nG
%%~xG
最后一个for
循环从扩展的%%~xG
设置一个变量%food%
,它是文件的扩展名,使用一个随机示例是。pizza
我们只需要去掉
,您就有了pizza
。我们通过%food:~1
做到这一点
@echo off
setlocal EnableDelayedExpansion
pushd "%userprofile%\Desktop\example\A-POOL"
set n=0
for %%f in (*.*) do (
set /A n+=1
set "file[!n!]=%%f"
)
for /L %%i in (1,1,%time:~-1%) do set "dummy=!random!"
set /A "rand=(n*%random%)/32768+1"
copy "!file[%rand%]!" "..\B-FOLDER\video.mp4" /Y
for %%G IN ("!file[%rand%]!") DO (
echo %%~nG > "..\B-FOLDER\title.txt"
set "food=%%~xG"
)
copy "..\FOOD-DATABASE\%food:~1%.jpg" "..\B-FOLDER\food.jpg" /Y
popd
注意
pushd
而不是cd
,并且使用的是相对路径,而不是完整路径,因为我们在同一文件夹结构中工作
C:\users\
替换为%userprofile%
。如果其他人希望从类似的文件夹运行此功能,他们的
将有所不同
popd
只需更改回上一次pushd
之前的工作目录。此特定脚本不需要它,但需要添加它,以便与pushd
cmd
上找到帮助主题,只需运行带有附加/?
的命令名,例如for/?
,set/?
等
您已经为我们提供了完美的工作代码,它没有表现出特定和可复制的问题。除此之外,您还编写了与代码无关的文本。您需要做的是使用该工具重新审视您的问题,并提供与新问题相关的代码,在文件树之前和之后提供这些代码,以便您的漫谈在编程级别上有意义。在进行这些更改之前,请确保您已使用并阅读了的所有链接页,以便更好地了解对您的要求。我在上一个问题中向您展示了如何将文件名与文件扩展名分开。是的,我知道并实现了您给我的字符串。成功。不幸的是,这种随机和条件代码对我来说非常复杂,我无法用我的超基础知识理解它。我尝试了很多,但这是一种高级情况。当您提供的代码没有显示您所遇到的问题,并且问题的描述(尤其是您提到的一些文件路径)与您的代码不匹配时,很难为您提供帮助。打开命令提示符,键入:
以获取/?
阅读帮助文件。请关注帮助文件的最后部分,该文件描述了变量修饰符的。好的,我将进行讲解并编辑问题,谢谢您的建议