标题: [文件操作] [已解决]如何删除JPG文件--属性--详细信息,里面的指定信息,不要全部删除 [打印本页]
作者: thp2008 时间: 2021-5-3 19:40 标题: [已解决]如何删除JPG文件--属性--详细信息,里面的指定信息,不要全部删除
本帖最后由 thp2008 于 2021-5-6 18:44 编辑
如何删除JPG 文件指定的属性信息!
鼠标操作的方法
选中JPG文件--属性--详细信息,删除属性和个人信息,选中要删除的项,确定。
比如,我要删除“程序名称”,这一项,用批处理,应该如何做?谢谢!
作者: 1152 时间: 2021-5-3 20:08
本帖最后由 1152 于 2021-5-3 21:22 编辑
这个批处理是做不到的。
作者: thp2008 时间: 2021-5-3 22:58
那VBS或者Powellshell之类,可不可以做到呢,或者第三方工具。
作者: 1152 时间: 2021-5-3 22:59
本帖最后由 1152 于 2021-5-4 10:41 编辑
回复 3# thp2008
这个是需要权限的
作者: WHY 时间: 2021-5-4 14:35
假设需要删除属性“程序名称”的图片在 E:\IMG\a.jpg
删除“程序名称”后另存为 E:\IMG\b.jpg- [void][Reflection.Assembly]::LoadWithPartialName('System.Drawing');
- $img = [Drawing.Image]::FromFile('E:\IMG\a.jpg');
- $p = $img.PropertyItems[0];
- $p.Id = 0x0131; #0x0131=属性程序名称
- $p.Type = 2;
- $p.Value = @(0x00); #赋值为 NULL
- $p.Len = $p.Value.Count;
- $img.SetPropertyItem($p);
- $img.Save('E:\IMG\b.jpg', [Drawing.Imaging.ImageFormat]::JPEG);
- echo 'Done';
- [Console]::ReadKey();
复制代码
请参考:https://docs.microsoft.com/en-us ... ew=netframework-3.0
作者: thp2008 时间: 2021-5-5 12:46
本帖最后由 thp2008 于 2021-5-5 14:53 编辑
回复 5# WHY
感谢您的帮助,我测试了,可行。
如果我想对某个文件夹进行操作呢,可否帮我改一下,非常感谢!
作者: WHY 时间: 2021-5-5 15:48
- [void][Reflection.Assembly]::LoadWithPartialName('System.Drawing');
- $srcDir = 'E:\IMG'; #原始照片的存放目录
- $dstDir = 'E:\change'; #修改属性后照片的存放目录
- If( ![IO.Directory]::Exists($dstDir) ){ $null = md $dstDir; }
-
- dir $srcDir -Filter *.jpg | ?{$_ -is [IO.FileInfo]} | forEach{
- $img = [Drawing.Image]::FromFile($_.FullName);
- $p = $img.PropertyItems[0];
- $p.Id = 0x0131; #属性-详细信息-程序名称
- $p.Type = 2;
- $p.Value = @(0x00); #赋值为NULL
- $p.Len = $p.Value.Count;
- $img.SetPropertyItem($p);
- $img.Save($dstDir + '\' + $_.Name, [Drawing.Imaging.ImageFormat]::JPEG);
- $img.Dispose();
- }
-
- echo 'Done';
- [Console]::ReadKey();
复制代码
作者: WHY 时间: 2021-5-5 15:54
获取某张图片文件可用的 PropertyItem.Id 及对应的 PropertyItem.Value- [void][Reflection.Assembly]::LoadWithPartialName('System.Drawing');
- $img = [Drawing.Image]::FromFile('E:\IMG\a.jpg');
- $p = $img.PropertyItems;
- for($i=0; $i -lt $p.Count; $i++){
- '0x{0:X4}' -f $p[$i].Id;
- [Text.Encoding]::UTF8.GetString($p[$i].Value);
- #[Text.Encoding]::UNICODE.GetString($p[$i].Value);
- }
-
- echo 'Done';
- [Console]::ReadKey();
复制代码
作者: thp2008 时间: 2021-5-6 18:44
回复 7# WHY
非常感谢您的帮助!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |