从BATCH文件中的.txt文件读取数据

时间:2019-01-08 22:07:17

标签: file batch-file copy paste delete-file

我一直在尝试制作一个程序(.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记忆棒的安装程序,以使大量软件的安装更快。

让我告诉您整个过程如何工作:

  1. 配置settings.txt文件
  2. 使用所需的程序和我的.bat小文件将木棍插入PC中
  3. 运行它!
  4. 使用该程序继续安装过程
  5. 我的软件删除了安装程序
  6. 从PC上卸下存储棒(为安全起见,请不要忘记弹出USB;))
  7. 在另一台计算机上重复这个非常短的过程

所有这些节省了时间,因为您不必每次都获得安装程序,只需配置所有内容一次并继续安装...:)

我也喜欢使事情变得漂亮,所以...请不要给我带来混乱...:)

谢谢你前进, 来自法国的爱, ILTP -_-

2 个答案:

答案 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

希望它可以帮助您。