我创建了一个脚本,它查看一个文件夹,然后创建一个包含信息的新输出文件
我有一个输出文件夹,该文件夹中有文件夹(其文件名为创建时的时间戳,即 201303051158),这些文件夹中有几个文件,其中包含我想要加载到数据库中的信息。
我想在这些数据文件中添加更多信息
rem list files in folders in ts_users and output to a file 3 values, folder, filename
rem without type and full filename
del c:\ts_users\files_list.txt c:\ts_users\filelocations.txt c:\ts_users\folders_list.txt
cd c:\ts_users\output
for /r %%a in (*) do echo %%a >>c:\ts_users\files_list.txt
FOR /F "tokens=4,5 delims=\" %%a in (c:\ts_users\files_list.txt) do @echo %%a %%b %%~nb >>c:\ts_users\filelocations.txt
输出文件如下所示
201303051158 eu1ptsw001.out eu1ptsw001
我想将此信息添加到数据文件的每一行。
数据文件中的一行如下所示:
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
mehmet.togrul rdp-tcp#0 2 Active 41 05/03/2013 05:05
thabo.lesame rdp-tcp#23 3 Active 6 05/03/2013 05:55
我希望它看起来像这样(不包括第一行)
201303051158 mehmet.togrul rdp-tcp#0 2 Active 41 05/03/2013 05:05 eu1ptsw001
201303051158 thabo.lesame rdp-tcp#23 3 Active 6 05/03/2013 05:55 eu1ptsw001
使用批处理文件是执行此操作的最佳方法吗?
答案1
怎么样
setlocal enabledelayedexpansion
for /r %%a in (*) do echo %%a >>c:\ts_users\files_list.txt
FOR /F "tokens=4,5 delims=\" %%a in (c:\ts_users\files_list.txt) do (
set myOutput=%%a %%b %%~nb
::or whatever %%X you want
)
然后在您用来将所有信息回显到日志文件的行上:
echo %whatever_you_are_already_using% %myOutput% >> logfile.extension
我不确定是否enabledelayedexpansion
真的需要,但我认为for
循环在批处理上有自己的范围,因此它相当于使用static var=
。问题set /?
是,我这里没有 Windows,我记不清了。您可能需要使用!myOutput!
而不是%myoutput%
。
至于使用批处理来执行此操作...如果您熟悉批处理脚本并且已经做到了这一点...当然,坚持使用它,否则我会使用一些更动态、更简单的语言,如 Python,因为使用批处理操作数据可能会有点过于复杂。我不确定它是否支持正则表达式,但如果它支持,那么使用它而不是所有那些疯狂的for
参数将是一个好主意。