[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]如何删除JPG文件--属性--详细信息,里面的指定信息,不要全部删除

本帖最后由 thp2008 于 2021-5-6 18:44 编辑

如何删除JPG 文件指定的属性信息!
鼠标操作的方法
选中JPG文件--属性--详细信息,删除属性和个人信息,选中要删除的项,确定。
比如,我要删除“程序名称”,这一项,用批处理,应该如何做?谢谢!

本帖最后由 1152 于 2021-5-3 21:22 编辑

这个批处理是做不到的。

TOP

那VBS或者Powellshell之类,可不可以做到呢,或者第三方工具。

TOP

本帖最后由 1152 于 2021-5-4 10:41 编辑

回复 3# thp2008


    这个是需要权限的

TOP

假设需要删除属性“程序名称”的图片在 E:\IMG\a.jpg
删除“程序名称”后另存为 E:\IMG\b.jpg
  1. [void][Reflection.Assembly]::LoadWithPartialName('System.Drawing');
  2. $img = [Drawing.Image]::FromFile('E:\IMG\a.jpg');
  3. $p = $img.PropertyItems[0];
  4. $p.Id = 0x0131;    #0x0131=属性程序名称
  5. $p.Type = 2;
  6. $p.Value = @(0x00);   #赋值为 NULL
  7. $p.Len = $p.Value.Count;
  8. $img.SetPropertyItem($p);
  9. $img.Save('E:\IMG\b.jpg', [Drawing.Imaging.ImageFormat]::JPEG);
  10. echo 'Done';
  11. [Console]::ReadKey();
复制代码
请参考:https://docs.microsoft.com/en-us ... ew=netframework-3.0
3

评分人数

TOP

本帖最后由 thp2008 于 2021-5-5 14:53 编辑

回复 5# WHY

感谢您的帮助,我测试了,可行。

如果我想对某个文件夹进行操作呢,可否帮我改一下,非常感谢!

TOP

  1. [void][Reflection.Assembly]::LoadWithPartialName('System.Drawing');
  2. $srcDir = 'E:\IMG';        #原始照片的存放目录
  3. $dstDir = 'E:\change';     #修改属性后照片的存放目录
  4. If( ![IO.Directory]::Exists($dstDir) ){ $null = md $dstDir; }
  5. dir $srcDir -Filter *.jpg | ?{$_ -is [IO.FileInfo]} | forEach{
  6.     $img = [Drawing.Image]::FromFile($_.FullName);
  7.     $p = $img.PropertyItems[0];
  8.     $p.Id = 0x0131;        #属性-详细信息-程序名称
  9.     $p.Type = 2;
  10.     $p.Value = @(0x00);    #赋值为NULL
  11.     $p.Len = $p.Value.Count;
  12.     $img.SetPropertyItem($p);
  13.     $img.Save($dstDir + '\' + $_.Name, [Drawing.Imaging.ImageFormat]::JPEG);
  14.     $img.Dispose();
  15. }
  16. echo 'Done';
  17. [Console]::ReadKey();
复制代码
2

评分人数

TOP

获取某张图片文件可用的 PropertyItem.Id 及对应的 PropertyItem.Value
  1. [void][Reflection.Assembly]::LoadWithPartialName('System.Drawing');
  2. $img = [Drawing.Image]::FromFile('E:\IMG\a.jpg');
  3. $p = $img.PropertyItems;
  4. for($i=0; $i -lt $p.Count; $i++){
  5.     '0x{0:X4}' -f $p[$i].Id;
  6.     [Text.Encoding]::UTF8.GetString($p[$i].Value);
  7.     #[Text.Encoding]::UNICODE.GetString($p[$i].Value);
  8. }
  9. echo 'Done';
  10. [Console]::ReadKey();
复制代码

TOP

回复 7# WHY


    非常感谢您的帮助!

TOP

返回列表