我需要创建一个自动执行以下操作的脚本:
我在Windows Server 2008中执行此操作,因此我可以在CMD或PowerShell中执行此操作,但我不确定它们是否提供此类可能性。我可以尝试使用Perl或C#,但我想先尝试一种简约的方法。
答案 0 :(得分:2)
简化至编码 - Perl
安装新软件的简约性 - PowerShell(包括IIRS W.S.2008?)
答案 1 :(得分:2)
这么多答案,没有一个提供符合要求的解决方案......
您没有说明针对每个CSV行检查的条件是什么,CSV会是什么样的,以及日志会是什么样的 - 所以我把它全部搞定了...这是BATCH中的一个例子:
@echo off
set csvfile=input.csv
set logfile=output.log
for /F "tokens=1,2,3 delims=," %%a in (%csvfile%) do call :processline "%%a" "%%b" "%%c"
exit /B 0
:processline
set param=%~3
set check=%param:um=%
rem if they are not equal - substring 'um' exists in it.
if not "$%check%" == "$%param%" (
rem this passes all params to output.
rem I'm not calling echo directly here, because there might be symbols, that will confuse CMD at the end of the %*.
call :output %*>> %logfile%
)
exit /B 0
:output
set colA=%~1
set colB=%~2
set colC=%~3
rem output to log
echo [%DATE% %TIME%] (%colB%) %colA% %colC%.
exit /B 0
以下是我测试的示例输入文件:
foo,1,dum
bar,3,dim
baz,15,dirum
这是生成的日志消息:
[2009-10-14 14:57:35.87] (1) foo dum.
[2009-10-14 14:57:35.89] (15) baz dirum.
我希望这清楚地表明,BATCH并不令人讨厌,也很难使用。 :P
如果您对BATCH有进一步的疑问 - 不要害羞,请将它们全部发布在SO上。 ;)
答案 2 :(得分:1)
我建议使用Python(或Perl,如果你这样摆动)。这些是非常小的工具,必须在计算机上安装并添加所需的所有功能。
你描述的字符串处理在任何shell(包括Bash)中都是令人不愉快的,除非你使用sed或awk ......而这只是深奥。如果你先直接使用脚本语言,最后你会保留更多头发。
答案 3 :(得分:0)
Perl被召唤存在以迅速解决这些问题 任务。它不应该花费20多行 特别的问题。
安装起来也非常简单: