【发布时间】:2020-02-29 02:37:58
【问题描述】:
这里的任何人都可以给我一个提示,为什么我的批处理脚本将成功处理的文件夹标记为系统、隐藏、非存档?此外,我什至无法通过资源管理器删除“隐藏”属性(可能是因为 systemfolder 属性)。
该脚本旨在处理一个文件夹(作为参数传递给它),查找标记为只读的原始照片文件(在我的情况下为 .nef 文件)。对于每张只读照片,脚本会将指定的文件复制到已处理的文件夹中,并根据照片文件名重命名该副本。
文件夹属性混乱是由robocopy引起的。 (没有该命令就没有问题。)但它根本不必触摸文件夹。它只会将一个文件复制到该文件夹。仅当文件夹中至少有一个文件被标记为只读并获得一个附属文件时,才会发生该错误。
我已经尝试将脚本从系统驱动器移动到桌面并从那里启动它。没什么区别。
(为避免混淆:我使用的是非英语 Windows 10,所以我使用了 !var! 而不是 %var%。该死的,我花了一些时间才找到那个技巧......)
echo off
setlocal ENABLEDELAYEDEXPANSION
chcp 65001
IF "%~1" == "" (
GOTO myWarning
) ELSE (
IF EXIST "%~1" (
GOTO myFuction
) ELSE (
GOTO myWarning
)
)
GOTO myFuction
:myWarning
echo Ordner-Pfad muss angegeben werden!
pause
GOTO:eof
:myFuction
echo Bearbeite %1
cd "%1"
for /r %%f in (*.nef) do (
set fileattr=%%~af
set readonlyattr=!fileattr:~1,1!
:: check if current file is read-only
IF !readonlyattr!==r (
:: create XMP-Sidecar file for read-only photos
echo %%f
robocopy "C:" "%1" "metadata-2stars.xmp"
rename "metadata-2stars.xmp" "%%~nf.xmp"
)
)
GOTO:eof
【问题讨论】:
-
您需要提供示例文件、确切的目录结构、执行命令时在当前目录的目录结构中的确切位置以及使用的确切命令行,以便我们能够重现问题并找出问题所在。
-
这样更有意义吗?
For /F "Delims=" %%F In ('Dir /B/S/A:-DR *.nef 2^>NUL') Do Echo %%F -
@MikeNakis 我试过这个,而 markReadonlyWith2stars.cmd 脚本放在 C:\ 或 G:\Users\username\Desktop 中,而处理后的文件夹基本上放在任何地方(在 SDHC 卡上,在 T:\ 或其他文件夹中)。我通常通过将文件夹拖放到脚本文件中来使用此脚本。但是通过cmd调用它并没有什么区别。
-
@Compo 刚刚测试过。它不能解决问题,但它也可以像我的脚本一样工作并且更短。
-
@Roberto,我将其发布为评论,而不是答案!我的工作是只处理只读
.nef文件。你的进程每个.nef文件,然后尝试确定它是否是只读的。还请确保您已阅读 robocopy、robocopy /?的帮助信息,尤其是/IA:R/XA:R/A+:R和/A-:R选项。我目前无法进一步帮助您,因为您没有以我理解的方式解释您的具体问题。
标签: batch-file cmd file-attributes