我正在尝试创建一个批处理文件,它会将.html文件夹中的所有文件转换为.txt,查找并替换文本,并将.txt文件重新调回.html。 HTML文件包含这行代码
`$(".screenshot").click(function () {
$(".ui-background").show();
$(this)
.clone()
.appendTo($('body'))
.addClass("full");
});`
我想用
替换它$("img.screenshot").addClass("fulldisplay");
$(".fulldisplay").css('float', 'left');
$(".fulldisplay").css('position', 'relative');
$(".fulldisplay").css('width', '100%');
$(".fulldisplay").css('height', 'auto');
使用ren cmd行我能够将HTML文件转换为.Txt,以便我可以搜索此字符串并将其替换为所需的字符串。但是,当找到并替换任何对我有用的东西时。我试着用
powershell -Command "(gc C:\Users\IVIS\Downloads\m2test.txt) -replace '$(".screenshot").click(function(){$(".ui-background").show();$(this).clone().appendTo($('body')).addClass("full");});','$("img.screenshot").addClass("fulldisplay");
$(".fulldisplay").css('float', 'left');
$(".fulldisplay").css('position', 'relative');
$(".fulldisplay").css('width', '100%');
$(".fulldisplay").css('height', 'auto');'| Out-File C:\myFile.txt"
和其他一些事情似乎没有任何作用。我也尝试使用那些无效的fnr.exe
。
答案 0 :(得分:0)
我认为您使用PowerShell时遇到的问题是-Replace使用RegEx匹配,因此您必须为RegEx转义搜索字符串才能使其正常工作。我认为更适合你的是在PowerShell中创建一个脚本,并直接运行它或从批处理文件中调用脚本。我会做这样的事情:
Param([String]$Dir='.')
$Seek=(@'
`$(".screenshot").click(function () {
$(".ui-background").show();
$(this)
.clone()
.appendTo($('body'))
.addClass("full");
});
'@).trim()
$NewText=(@'
$("img.screenshot").addClass("fulldisplay");
$(".fulldisplay").css('float', 'left');
$(".fulldisplay").css('position', 'relative');
$(".fulldisplay").css('width', '100%');
$(".fulldisplay").css('height', 'auto');
'@).trim()
Get-ChildItem "$Dir\*.html" | ForEach{
$FilePath=$_.FullName
(Get-Content $_.FullName -ReadCount 0) -replace [RegEx]::Escape($Seek), $NewText|Out-File $FilePath
}
然后,您可以从批处理文件中调用它,只需传递一个文件夹路径,它将处理该文件夹中的所有HTML文件。