使用批次删除文件的最后n个字符

问题描述:

我在一个文件夹中有大约500个文件。我试图使用批次“for /r %i in (*) do type 4KB file.txt >> %i使用批次删除文件的最后n个字符

将所有文件(存储为文件)连接到所有文件 现在我希望它们恢复到原始状态,很少有文件大约是14GB,在尝试读取时,大量的时间来打开。

请让我知道我该怎么回复他们回到原来的状态。

+1

你可以举一些关于这些文件内容的例子,你想删除什么?或者状态如何现在以及你想看到的结果。 – DarkLite1 2014-09-03 11:34:11

+0

其中大多数是二进制文件。该4 KB文件是一个文本文件,我想将它们添加到为每添加4KB时测试上传速度。它可以是我们希望的任何事情。 – debiansse 2014-09-03 11:48:25

+1

只需在连接4KB数据之前备份不同文件夹中的所有文件,并删除原始文件夹并在要恢复原始状态时重命名备份文件夹。 – Aacini 2014-09-03 15:06:25

首先,这个任务的难度取决于你附加到文件中的实际字符串。

Get-ChildItem [your path here] | ForEach-Object { 
$TempVar = Get-Content $_ | Select-string -Exclude "Something that uniquely matches the string you want to remove" 
$TempVar | Set-Content $_ } 

或者:

Get-ChildItem [your path here] | ForEach-Object { 
$Length = ($_.ToCharArray) - 4096 #As you have 4KB, exactly? 
$Newfile = ($_.ToCharArray() | Select -first $Length) -join "" 
$NewFile | Set-content $_ 

} 

两个尝试可以被认为是有害的,因为这可能会影响到编码,文件结构等 - 我只是没有足够的时间来检查这一点。如果文件重要,最好备份它们。