我一直在尝试制作一个程序(.bat,然后我将其转换为.exe),该程序可以复制并运行软件安装程序以在大量计算机上安装特定程序,但是我也要这样做使用任何文件并制作一个.txt文件以告诉.bat文件如何执行xcopy命令...
所以...我需要帮助来读取BATCH文件中的.txt文件
这是我的代码的一部分,没有运行和删除的内容:
@echo off
echo Running...
for /f "Delims=1" %%a in (settings.txt) do (
set settings1=%%a
)
set file_org=%settings1%
for /f "Delims=2" %%b in (settings.txt) do (
set settings2=%%b
)
set file_dest=%settings2%
echo Copying %file_org% to %file_dest% ...
xcopy /y %file_org% %file_dest% >nul
echo Copied %file_org% to %file_dest% succesfuly!
pause
这是正确时.txt文件的显示方式:
F:\test
C:\Users\%username%\Desktop
第一行是要复制的文件的原点 第二行是将文件复制到的目标位置
是的,这是要在USB记忆棒上运行的,实际上,就像我之前所说的那样,它是要传输,运行,删除USB记忆棒的安装程序,以使大量软件的安装更快。
让我告诉您整个过程如何工作:
所有这些节省了时间,因为您不必每次都获得安装程序,只需配置所有内容一次并继续安装...:)
我也喜欢使事情变得漂亮,所以...请不要给我带来混乱...:)
谢谢你前进, 来自法国的爱, ILTP -_-
答案 0 :(得分:0)
您的代码遇到的主要问题是滥用Delims=
。总之,这将告诉for loop
进行循环,作为令牌之间分离的一部分。例如Hello1My1Name1Is1John
... Delims=1
将删除1
,并允许您根据tokens=1,2,3,4,5
进行分隔,因此%%A
= {{ 1}},Hello
= %%B
,例如
实际上可以为您提供帮助的是名为My
的运算符。这将跳过第一个结果的 x 数量,从而限制了结果。所以..
skip=
但是,有一种更简单的方法可以做到这一点。由于您可以控制文本文件的格式设置,因此我们可以从文本文件的一行中获取字符串名称和数据,从而限制代码并使其更加专业。
为此,我们可以使用for /f "Tokens=*" %%a in (settings.txt) do (
set file_org=%%a
)
for /f "Tokens=* Skip=1" %%a in (settings.txt) do (
set file_dest=%%a
)
格式。要在一个循环中调用它们,将使用带有file_org=F:\test
的非常简单的for
循环。请记住,尤其是对于文件夹/文件位置,您引用tokens=1,2* delims==
语句。例如set
。进一步注意,不要害怕将主字符串设置在它自己的循环内。我知道您为什么要这样做以获取最新的结果,但是通过适当的循环设置,您将不需要这样做!
Copy.Bat:
set "file_dest=%settings2%"
Settings.ini:(以@ECHO OFF
Rem | Set strings based of whats in config
for /F "tokens=1,2* delims==" %%A in (Settings.ini) do (
Set "%%A=%%B"
)
echo Copying %file_org% to %file_dest% ...
xcopy /y %file_org% %file_dest% >nul
echo Copied %file_org% to %file_dest% succesfuly!
pause
为自首选项。.ini
也可以使用)
.txt
要获取有关任何命令的帮助,请执行以下操作:
file_org=F:\test
file_dest=C:\Users\%username%\Desktop
call /?
set /?
for /?
if /?
答案 1 :(得分:0)
我将尝试执行将文件的第一行和第二行读入变量的任务,如下所示:
@Echo Off
Echo Running ...
(Set /P "file_org="
Set /P "file_dest=")<"settings.txt"
Echo Copying %file_org% to %file_dest% ...
XCopy "%file_org%" "%file_dest%" /Y >Nul 2>&1 && (
Echo Copied %file_org% to %file_dest% succesfully!)
Pause
希望它可以帮助您。