AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-428263

HTWingNut's questions

Martin Hope
HTWingNut
Asked: 2022-04-21 10:54:28 +0800 CST

硬盘驱动器如何知道它是否正在写入以前还不错的坏扇区?

  • 6

当硬盘驱动器写入磁盘时,它如何知道写入时扇区是否坏,如果以前知道它是好的?据我所知,它不会读回它写入的数据,它只是把它放下,对吗?

它只是得到磁场强度不够高的反馈吗?还是只会在该扇区的下一次读取过程中检测到?

hard-drive filesystems
  • 1 个回答
  • 125 Views
Martin Hope
HTWingNut
Asked: 2022-02-25 16:24:13 +0800 CST

Windows 是否会在每次删除时发送 TRIM 命令?

  • 5

我理解TRIM背后的概念。我知道您可以通过“碎片整理和优化驱动器”的“优化计划”部分来安排 TRIM。但是,Windows 是否会在您每次删除文件时发送 TRIM 命令来删除已删除的文件?还是仅由计划或手动运行的 TRIM 事件管理?

windows ssd
  • 1 个回答
  • 98 Views
Martin Hope
HTWingNut
Asked: 2021-09-19 05:36:58 +0800 CST

有没有办法运行 Windows CHKDSK 来扫描表面而不尝试修复?

  • 5

有没有办法在不尝试修复的情况下使用 Windows CHKDSK 运行硬盘驱动器的表面扫描?

我看到的表面扫描的唯一选项是/r扫描表面但也尝试恢复坏扇区。如果您怀疑驱动器坏了,我不一定要尝试恢复,只需检查表面是否有坏扇区,尝试备份,然后尝试修复。

我知道还有其他工具可以解决这个问题,但想知道 CHKDSK 是否有办法?

编辑:不知道为什么投反对票,这是一个有效的问题。

windows command-line
  • 2 个回答
  • 457 Views
Martin Hope
HTWingNut
Asked: 2021-07-12 14:13:11 +0800 CST

带有 WMIC 输出未正确截断的 Windows 命令行批处理变量子字符串

  • 6

使用 Windows Batch,我要做的就是获取以 MB 为单位的指定驱动器大小(按驱动器号)以及该驱动器可用的相应可用空间,该驱动器以整数形式存储在变量中,以进行一些基本的数学运算。

我使用这个脚本:

for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='Z:'" get Size /format:value`) do
 set SizeDisk=%%x

for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='Z:'" get FreeSpace /format:value`) do
 set FreeS=%%x

这给了我想要的值。但是,当我截断最后六位数字给我 MB 时(它足够接近我的需要):

SET /A SizeDiskMB=%SizeDisk:~0,-6%

SET /A FreeSMB=%FreeS:~0,-6%

它只截断最后五位而不是六位。如果我使用~0,-7,那么它会给我正确的值,但我想了解它为什么这样做。我还需要这些作为整数值,所以我可以做一些基本的数学运算,这就是/A.

感谢您的任何帮助。

编辑:

好的,我意识到在我真正做数学之前我不需要 /A 。我以为它会将变量设置为整数,但似乎并非如此。所以暂时忽略它。

我运行了以下代码:

@ECHO OFF
cls

for /f "usebackq tokens=2 delims==" %%x in (`wmic logicaldisk where "DeviceID='Z:'" get Size /format:value`) do set SizeDisk=%%x

Echo Size Disk:        %SizeDisk%   bytes
Echo Size Disk 0,-1:   %SizeDisk:~0,-1%
Echo Size Disk 0,-2:   %SizeDisk:~0,-2%
Echo Size Disk 0,-3:   %SizeDisk:~0,-3% KB
Echo Size Disk 0,-4:   %SizeDisk:~0,-4%
Echo Size Disk 0,-5:   %SizeDisk:~0,-5%
Echo Size Disk 0,-6:   %SizeDisk:~0,-6% MB
Echo Size Disk 0,-7:   %SizeDisk:~0,-7%

Pause

并收到以下结果:

Size Disk:        1887436795904 bytes <-- Same
Size Disk 0,-1:   1887436795904       <-- Same
Size Disk 0,-2:   188743679590
Size Disk 0,-3:   18874367959   KB
Size Disk 0,-4:   1887436795
Size Disk 0,-5:   188743679
Size Disk 0,-6:   18874367      MB
Size Disk 0,-7:   1887436
Press any key to continue . . .

"Size Disk"并且"Size Disk 0,-1"是相同的。不应该。

windows command-line
  • 1 个回答
  • 482 Views
Martin Hope
HTWingNut
Asked: 2021-04-16 19:03:39 +0800 CST

在 Windows 中的特定字符串之后从文件名中删除字符的最佳方法

  • 5

我想知道是否有一种快速简单的方法来搜索具有多个字符的文件名并删除之后的所有字符。

例如,如果我有一个名为:

Great Movie Title 2021 1080p asldkfjalfj.mkv
Another Great Movie 1997 480p aldfasdfa.avi
Boring movie but its ok 2015 720p asadfqwr.mp4

我想在文件名中找到1080p, 720p,480p然后删除它后面的所有内容。

我知道您可以使用 Windows 批处理For循环,但您只能使用单个字符来查找它。即使它是可以做到这一点的第三方应用程序,但我似乎无法找到它。

windows batch-rename
  • 2 个回答
  • 1056 Views
Martin Hope
HTWingNut
Asked: 2020-09-09 06:06:53 +0800 CST

安全摄像头 - 通过 PoE Keystone 插孔供电?

  • 5

我在家中连接了一些 PoE 安全摄像头,使用实芯 CAT6 电缆。我可以将摄像头直接连接到监控盒,但为了使其干净并具有灵活性,想将摄像头线安装到墙上的穿孔梯形插孔,然后使用 CAT6 跳线将监控盒连接到墙上杰克。

不确定这是否是 PoE 设备公认的做法,或者最好直接运行。这是所有 CAT6 布线,长度不超过 75 英尺。

我确实使用耦合器进行了测试,视频和音频质量很好。

所以而不是:

Camera --> CAT6 Cable --> Surveillance Box

做:

Camera --> CAT6 Cable --> Keystone Wall Jack --> CAT6 patch cable --> Surveillance Box

谢谢。

ethernet home-networking
  • 3 个回答
  • 736 Views
Martin Hope
HTWingNut
Asked: 2020-06-06 17:25:31 +0800 CST

Powershell比较对象但忽略特定字符?

  • 5

感谢这里的另一个用户,我能够发现 Powershell 比较对象。

我使用的代码很简单,这里是:

$array = Compare-Object $(Get-Content $Source1) $(Get-Content $Source2)
$array | where {$_.SideIndicator -eq "<="} | Format-Table -Property InputObject -AutoSize -HideTableHeaders | Out-File -Width 512 -Encoding utf8 NoMatchA.txt
$array | where {$_.SideIndicator -eq "=>"} | Format-Table -Property InputObject -AutoSize -HideTableHeaders | Out-File -Width 512 -Encoding utf8 NoMatchB.txt

我比较的文件是哈希+文件路径,看起来像这个测试输入源A:

0004250736cc617f596b24d69c52a1276ea7f81cd5f7c7e49458894987d02538 D:\Documents\Server\DBackupServer\snapraid\Archive\authors.txt
5a10fd71a62ca272908ded8a7f20826722c0fc67da22256accb42159baa13af2 D:\Documents\Server\DBackupServer\snapraid\Archive\copying.txt
d3d868c751b91c5bd5105db5b9c4f35429fe85a6405bf7fa073d969a0f24a4bc D:\Documents\Server\DBackupServer\snapraid\Archive\history.txt
a1ca63b535996640ac4c5ae0fb91998ebcb495928a637d8d8f71508573c289bd D:\Documents\Server\DBackupServer\snapraid\Archive\install.txt
62f9bfd975bc0773be108b20467d6ece969e06e033b5ae51fb56597d09800000 D:\Documents\Server\DBackupServer\snapraid\Archive\readme.txt

来源B:

0004250736cc617f596b24d69c52a1276ea7f81cd5f7c7e49458894987d00000 E:\Documents\Server\DBackupServer\snapraid\Archive\authors.txt
06d99bb9e6b9c0f57828b29a465a769628da86faca48a104fbdd3263d85eda4d E:\Documents\Server\DBackupServer\snapraid\Archive\backup_snapraid.bat
5a10fd71a62ca272908ded8a7f20826722c0fc67da22256accb42159baa13af2 E:\Documents\Server\DBackupServer\snapraid\Archive\history.txt
a1ca63b535996640ac4c5ae0fb91998ebcb495928a637d8d8f71508573c289bd E:\Documents\Server\DBackupServer\snapraid\Archive\install.txt
62f9bfd975bc0773be108b20467d6ece969e06e033b5ae51fb56597d098969f3 E:\Documents\Server\DBackupServer\snapraid\Archive\readme.txt

但我希望它忽略驱动器号,以便我可以比较来自两个不同来源的两个文件。现在我通过for /f批处理文件中的命令运行哈希日志文件以删除驱动器号,但是对于大量条目可能需要很长时间。

compare-object 有什么方法可以忽略驱动器号?这:是驱动器号的唯一标识符(尽管最终希望让它与前面的 UNC 一起工作\\)并且考虑到哈希值,它应该始终位于相同的位置,所以这可能会有所帮助。

我尝试使用该Split()命令,虽然我可以根据空格字符拆分对象,但我不确定如何将它实现到比较对象中。

我尝试使用:get-content $Source1 | foreach {$_ -replace "D:", ""} | Set-Content "$Source1a"这与批处理文件一样长...

谢谢你的帮助。

编辑:谢谢大家到目前为止的帮助。我还没有机会测试一个提案,明天应该会去。

无论如何,为了澄清我正在寻找三个文件输出:

  1. A 中的文件而不是 B 中的文件- 与输入相同的输出格式(哈希 + 文件路径/名称),但仅比较文件名/路径,以识别源 A 中而不是源 B 中的文件。

从上面的测试输入中,结果输出将是“FileAnotInB.txt”:

5a10fd71a62ca272908ded8a7f20826722c0fc67da22256accb42159baa13af2 D:\Documents\Server\DBackupServer\snapraid\Archive\copying.txt
  1. B 中的文件而不是 A 中的文件- 与输入相同的输出格式(哈希 + 文件路径/名称),但仅比较文件名/路径,以识别源 B 中而不是源 A 中的文件。

从上面的测试输入中,结果输出将是“FileBnotInA.txt”:

06d99bb9e6b9c0f57828b29a465a769628da86faca48a104fbdd3263d85eda4d E:\Documents\Server\DBackupServer\snapraid\Archive\backup_snapraid.bat
  1. 散列不匹配- 与输入相同的输出格式(散列 + 文件名路径),但仅比较散列,以识别不匹配的散列,最好将 sourceA 和 SourceB 相互叠加以进行简单比较:

从上面的 Test INPUT 中,结果输出将是(通知 00000 在哈希末尾替换以进行测试)“FailedHashes.txt”:

0004250736cc617f596b24d69c52a1276ea7f81cd5f7c7e49458894987d02538 D:\Documents\Server\DBackupServer\snapraid\Archive\authors.txt
0004250736cc617f596b24d69c52a1276ea7f81cd5f7c7e49458894987d00000 D:\Documents\Server\DBackupServer\snapraid\Archive\authors.txt
62f9bfd975bc0773be108b20467d6ece969e06e033b5ae51fb56597d09800000 E:\Documents\Server\DBackupServer\snapraid\Archive\readme.txt
62f9bfd975bc0773be108b20467d6ece969e06e033b5ae51fb56597d098969f3 E:\Documents\Server\DBackupServer\snapraid\Archive\readme.txt

看起来 JosefZ 的回应可能会做到这一点,或者至少我可以调整它来做到这一点。我必须测试才能看到,但想编辑以澄清并感谢您的帮助!

windows powershell
  • 2 个回答
  • 1047 Views
Martin Hope
HTWingNut
Asked: 2020-06-03 18:02:45 +0800 CST

Windows Batch For Loop - 未设置变量

  • 7

编辑:看来我在声明GOTO :EOF的末尾有一个迷路ECHO,它实际上会 GOTO :EOF ... d'oh!感谢您的回复。我认为这个错误现在被压扁了。


我有一个脚本,我想在其中滚动一个文本文档,比较文件是否匹配。

脚本在这里:

setlocal enabledelayedexpansion
for /f "tokens=1* delims=\" %%a in (NoMatchA.txt) DO (
        set "flag="
        for /f "tokens=1* delims=\" %%i in (NoMatchB.txt) do (
                IF "%%b"=="%%j" SET flag=1
        )
        IF DEFINED flag ECHO FLAG DEFINED
        IF NOT DEFINED flag ECHO FLAG NOT DEFINED
)
endlocal

组成输入NoMatchA.txt和NoMatchB.txt组成示例:

1234567890 \TEMP\ANIMALS\DOGS\FILE1.pdf
0987654321 \TEMP\TREES\I hate willows.docx
1122334455 \TEMP\LINUX ISOS\linustarvolds.iso
1029384756 \COVID\CANSUCk\MYBALLS\prettyflowers.jpg

1231509876 \USERS\HOMERSIMPSON\Doh.wav
1234567890 \TEMP\ANIMALS\DOGS\FILE1.pdf
0987654321 \TEMP\TREES\I hate willows.docx
1029383321 \COVID\CANSUCk\MYBALLS\prettyflowers.jpg

你得到图片。如果我回显,IF "%%b"=="%%j" SET flag=1我可以清楚地看到它们是相等的,但flag仍然显示为未定义。

所以基本上,如果文件名匹配,我想以某种方式处理该数据。

windows command-line
  • 1 个回答
  • 1524 Views
Martin Hope
HTWingNut
Asked: 2020-05-31 18:07:42 +0800 CST

用于比较两个文本文件的 Windows 批处理脚本

  • 9

我有这个脚本:

for /f "delims=" %%a in (data_A.txt) DO (
    set "flag="
    for /f "delims=" %%b in (data_B.txt) do (
        if "%%a"=="%%b" CALL :flagit
    )
    if not defined flag >>notmatch.txt echo %%a
)

:flagit
set flag=1
goto :eof

我正在比较两个文本文件之间的每一行以确定不匹配的条目。这些文件包含校验和哈希值和相对路径信息。

它可以工作,但速度很慢。包含 100,000 个条目的文件需要两个半小时以上,我必须这样做两次,因为我必须比较两种方法来捕获 A 上可能不在 B 上但也可能不在 A 上的 B 上的任何条目。数据也不一定是任何特定的排序顺序。

我正在寻找:

  • 集 A 上的文件 不在集 B 上的文件
  • 集 B 上的文件不在集 A 上
  • 校验和不匹配的文件

前两个我很容易处理(文件不在 A/B 上),因为一旦我得到“不匹配”条目,它们应该很少,并且比较两者上是否存在相对路径应该是直截了当的(我希望)。但最后一个是真正的糟糕。

数据示例:

dd2da0dcb5a54989dd4d2312013ddb12345c0593ed59a6d307461d925d57226d89d24c2e5a95c0d4082b14118cb8766d89ae69e40c4dac1ab5bd718bd7c58d9a \Personal\Pictures\Camera 2019\2019-02-17 15.02.34.jpg 
509ebfd1e2c180ccd6bd679204b7c255f3c7abcdefg7660e219fa9eb58658d96a3ef8cec179221acb78be81f8dd78bd3a8b1a3cdaef0cd691725d3402a495b0b \Personal\Pictures\Camera 2019\2019-02-17 15.03.59.jpg 
a3180dce7675aeb161f8fe25fcbd39ff2678faf2326d3e2a39fchfasff90a714134bdd22f91103026c494e6ffcfd62d5cb3d46992de9dfff71b49f9a734c0ab9 \Personal\Pictures\Camera 2019\2019-02-17 17.11.41.jpg 
b5262c6ce5c4425a4ed737a7a8fdbc040c68003785d67177a25c86d9fb531ce42f74648783aed4bbb3aff7304b00d44b14eaa2a6c728b8802cafd22059570212 \Personal\Pictures\Camera 2019\2019-02-18 18.06.14.jpg 
da7e1eb7ec147628a59e702c55159bc32d66f3c540dfb4be436f136137af913a7139640701eba84f34796da4f35c9fasdffae35542f56b1dccf009d1cec30d20 \Personal\Pictures\Camera 2019\2019-02-22 06.18.15.jpg 
72c99a6f4394b4f65d4b66b00071de1d40cb717f525863875c36b2bc79dd0a8491ee8854b8b4437bfcfe4aa8379861aa43a7850dfac144d5db5b2c6b75dcf292 \Personal\Pictures\Camera 2019\2019-02-22 06.18.23.jpg 
4a8a39e68379b2c671d83935b13dc82dd60d5e8b36a32a8677698a9306876zcvaffaaa4af292d53a8f52df4ee1c7bc701068064f4d28009566e8825abf2ab077 \Personal\Pictures\Camera 2019\2019-02-22 06.20.10.jpg 
074103664be0c91664bd4e2e51d0e051c9cf8f27c26511d3a691d0asdfadfa134234808a16bf0679a8500910b09cf24d9e9c88788b4a749a81ec2d15f78cacfd \Personal\Pictures\Camera 2019\2019-02-22 06.27.14.jpg 
28dc03a7722b0781caa4dfasdf664w666777068c79456941a159ffefa1d9c34fed83b98858394c1aa471396a0b1a448d8dd89e361c564e6b27e451b2dd701dd7 \Personal\Pictures\Camera 2019\2019-02-23 11.54.34.jpg 

for 循环的工作方式是扫描另一个文件,直到找到不匹配的文件,将其输出到日志文件,然后转到下一个文件。似乎应该有一种方法可以在文件匹配或不匹配后将其从搜索中删除。

编辑- 好的,我有点搞乱 PowerShell。比较对象运行良好,但只需要弄清楚如何仅显示 A和B 上都存在的不同文件,并将仅在 A 上的文件和仅在 B 上的文件分开记录...

windows command-line
  • 1 个回答
  • 6131 Views
Martin Hope
HTWingNut
Asked: 2020-05-28 20:40:27 +0800 CST

寻找适用于 Windows 的最新 Blake2 b2sum.exe

  • 7

我从 blake2.net 下载了 b2sum 文件,但它来自 2013 年,似乎不支持“比较”-c选项。一些在线参考资料显示了我无法使用我拥有的版本访问的几个选项。它说b2sum: uknown option -- c

谁知道在哪里可以找到最新版本?

谢谢。

windows hashing
  • 2 个回答
  • 284 Views
Martin Hope
HTWingNut
Asked: 2020-05-23 08:24:40 +0800 CST

Powershell 使用 Get-ChildItem 跳过文件夹

  • 5

我正在运行的 PowerShell 脚本的一部分,我希望它完全忽略特定文件夹或路径。

我尝试使用-notmatchand also-notlike运算符。但它似乎仍会遍历该文件夹中的每个文件。虽然它不会处理该文件夹中的项目,所以我得到了想要的结果,但该文件夹中仍然有数十万个文件,并且可能需要很长时间才能运行脚本。我只是希望它完全绕过该文件夹。

这是我拥有的脚本的一部分:

$allfiles = Get-ChildItem -path $BaseDirectory -Force -File -Recurse | ? { $_.FullName -notmatch 'DATA\SHARED\GAMES\STEAM\SteamLibrary' } | select-object Name,FullName,Length

我也试过:

Where { $_.FullName -notlike '*\DATA\SHARED\GAMES\STEAM\SteamLibrary\*' }

有没有更好的方法让它完全跳过该文件夹,最好使用相对路径?甚至只是文件夹名称SteamLibrary

谢谢!

windows command-line
  • 1 个回答
  • 5898 Views
Martin Hope
HTWingNut
Asked: 2020-05-21 20:53:43 +0800 CST

需要帮助解决带有 7-zip 的 /R 无限循环的 Windows 批处理

  • 6

我有这个脚本的一部分,用于在文件夹结构中递归地单独加密/压缩文件。

它可以工作,除非它似乎是一个特定的文件夹,它会返回并开始压缩已经压缩的文件。我不太清楚是什么原因造成的。

文件夹中的文件名也都是一致的(它们是图像)。比如“ 2017-08-16 18.16.51.jpg”。压缩每个文件后,它会命名文件file1.7z file2.7z file3.7z,直到遍历所有子文件夹中的所有文件。

这是代码:

SETLOCAL DISABLEDELAYEDEXPANSION
...
...
<MORE SCRIPT HERE>
...
...

set count=0
for /r "%sourcedir%" %%a in (*) do (
CLS
set /A count+=1
SETLOCAL EnableDelayedExpansion
set fnz=file!count!.7z

ECHO ***
ECHO *** ENCRYPTING "%%a" as "!fnz!"
ECHO ***
ECHO *** FILE NUMBER !count! OUT OF !files! 
ECHO ***
ECHO %%a !fnz! >> "!batchdir!7ZIP_FILEREF_!folderzip!.txt"

!batchdir!7z.exe a -mx9 -sdel -p"!password!" -mhe=on "%%~dpa!fnz!" "%%a" >nul

ENDLOCAL
)

...
...
<MORE SCRIPT HERE>
...
...
ENDLOCAL

变量batchdir和folderzip较早在脚本中设置。

这是日志从最后一个文件翻转时的一些示例输出,以开始压缩已经压缩的文件file100.7z。左边的文件/文件夹是被压缩的文件。file###.7z右边的文件是压缩文件名:

E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\2017-08-13 13.24.18.jpg file961.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\2017-08-13 13.25.02.mp4 file962.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\2017-08-14 18.03.02.mp4 file963.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\2017-08-15 12.33.20.jpg file964.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\2017-08-16 18.16.51.jpg file965.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\2017-08-16 18.16.53.jpg file966.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\2017-08-16 18.18.26.jpg file967.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\2017-08-16 18.18.27.jpg file968.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\2017-08-16 18.18.29.jpg file969.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\2017-08-17 13.10.56.jpg file970.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\2017-08-18 06.59.19.jpg file971.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\BMPhoneWallpaper.png file972.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\file100.7z file973.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\file101.7z file974.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\file102.7z file975.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\file103.7z file976.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\file104.7z file977.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\file105.7z file978.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\file106.7z file979.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\file107.7z file980.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\file108.7z file981.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\file109.7z file982.7z 
E:\Temp\MDISC\Personal Test C17\Pictures\Camera 2017\file110.7z file983.7z 

就像我说的,到目前为止,它只有这个 ONE subfolder Camera 2017。我有其他像这样的文件夹Camera 2014 Camera 2015 Camera 2016,zip 完全没有问题。

windows command-line
  • 1 个回答
  • 186 Views
Martin Hope
HTWingNut
Asked: 2020-05-17 10:51:35 +0800 CST

带有感叹号“!”的 Windows 批处理循环文件名 问题

  • 6

感叹号是我使用 Windows Batch 的祸根。假设我只想跳过其中包含的文件名!。

我知道在 for 循环中检查变量中的常规文本,我可以运行:

setlocal enabledelayedexpansion
for /r %%a in (*) do (
set fname=%%~na
if not "!fname!"=="!fname:text=!" ECHO File contains the word "text"
)

但是如何指定感叹号呢?

我试图用 ^ 来逃避它:"!fname:^!=!"

然后我看到使用 enabledelayedexpansion 你需要一个^^!来转义角色。所以我尝试了没有运气。然后我想可能三个^^^!两个来逃避延迟扩展,一个在文件名中......

没运气...

有什么建议么?

windows command-line
  • 1 个回答
  • 1163 Views
Martin Hope
HTWingNut
Asked: 2020-05-16 14:49:43 +0800 CST

Windows 批处理脚本和使用“!”处理文件名 For循环中的感叹号

  • 5

我遇到问题的部分脚本在这里:

setlocal enabledelayedexpansion
for /r %%a in (*) do (
cd "%%~dpa" 
set /A count += 1
set fn=file!count!
%batchdir%\7z.exe a -mx9 -sdel -p"%password%" -mhe=on "!fn!.7z" "%%~nxa"
)

但是文件名变量不能正确处理带有感叹号的文件名。fn %%~nxa!

有没有办法解决这个问题?

谢谢。

编辑:改变fn那%%~nxa是问题

windows command-line
  • 1 个回答
  • 1247 Views
Martin Hope
HTWingNut
Asked: 2020-04-29 17:58:39 +0800 CST

Powershell - 检查路径是根目录还是子文件夹?

  • 5

我有一个 Powershell 脚本(在此人的帮助下,谢谢!)正在将值写入 xml,以便稍后与另一个 xml 进行比较。

重要的命令在这里输出要比较的数据:

'RelativePath' = ($file.fullname.substring($BaseDirectory.Length))

$file 用于在 for 循环中通过递归子目录分析的文件名。

$BaseDirectory 是开始分析的起始文件夹

'RelativePath' 正确解析文件夹路径,如果它是子目录(即 C:\Temp),则以前导“\”开头。但如果它是根路径(即只是 C:),它会存储不带前导“\”的路径。

例如,运行带有$BaseDirectory='T:\'输出的脚本如下所示(参考“RelativePath”):

-<Obj RefId="2">
   <TNRef RefId="0"/>
  -<MS>
      <S N="Hash">F13B655DEC0C07ACFD9329CB250276A3</S>
      <S N="FullPath">T:\20200412_193057\Public\Terraria\Jim's_wolrd.wld</S>
      <S N="FileName">Jim's_wolrd.wld</S>
      <I64 N="Size">11387570</I64>
      <S N="RelativePath">20200412_193057\Public\Terraria\Jim's_wolrd.wld</S>
   </MS>
 </obj>

但$BaseDirectory='Q:\Archive'输出看起来像这样(再次参考“RelativePath”):

-<Obj RefId="2">
   <TNRef RefId="0"/>
  -<MS>
      <S N="Hash">F13B655DEC0C07ACFD9329CB250276A3</S>
      <S N="FullPath">Q:\Archive\20200412_193057\Public\Terraria\Jim's_wolrd.wld</S>
      <S N="FileName">Jim's_wolrd.wld</S>
      <I64 N="Size">11387570</I64>
      <S N="RelativePath">\20200412_193057\Public\Terraria\Jim's_wolrd.wld</S>
   </MS>
 </obj>

唯一的区别是“RelativePath”有前导“\”。因此,当我比较两者时,它们不相等,因为前导路径反斜杠(或缺少它)。

windows powershell
  • 1 个回答
  • 1238 Views
Martin Hope
HTWingNut
Asked: 2020-04-20 14:59:43 +0800 CST

Windows 命令行/批处理文件检查 7zip 密码是否正确?

  • 7

在 Windows 批处理文件中,有没有办法检查压缩文件的 7zip 密码是否正确?

我想检查它是否成功,继续执行脚本(使用 call 或 goto 例程),如果不成功,则状态密码不正确,然后将循环返回以再次询问密码。

我知道我可以使用测试标志7z t -p%password% <path>,但不确定如何读取结果并自动确定它是否正确。

谢谢。

windows command-line
  • 1 个回答
  • 1159 Views
Martin Hope
HTWingNut
Asked: 2020-04-15 21:18:56 +0800 CST

在 Windows FOR / DO 批处理文件中将变量传递给文件名

  • 7

我有以下代码,我系统地检查并单独压缩每个文件。我不在乎文件名是什么,但我希望它或多或少地隐藏起来,所以只会调用每个文件“文件 1”、“文件 2”、“文件 3”等。

但是如何将变量传递fn=file!count!给 7z.exe 命令行?我添加echo命令只是为了确保变量正常工作,并且确实如此。但是如何让 fn 在 7z 命令行中解析为实际的“file1”“file2”等?我试过 %, !, %!, !%, %% ...大声笑。它只是给出一个空白文件名或 !fn! 或 %fn% 不是实际的变量值。

代码在这里,并提前感谢任何帮助:

setlocal enableextensions enabledelayedexpansion
cd /d E:\Temp\ziptest\Documents
set /A count=0
for /r %%a in (*) do (
cd "%%~pa" 
set /A count += 1
echo !count!
set fn=file!count!
echo !fn!
pause
REM 7z.exe a -mx9 -mmt12 -sdel -pt3st! -mhe=on "!fn!.7z" "%%~nxa"
)
endlocal

输出示例,您可以看到它正确递增并正确解析文件##:

E:\Temp\ziptest>setlocal enableextensions enabledelayedexpansion

E:\Temp\ziptest>cd /d E:\Temp\ziptest\Documents

E:\Temp\ziptest\Documents>set /A count=0

E:\Temp\ziptest\Documents>for /R %a in (*) do (
cd "%~pa"
 set /A count += 1
 echo !count!
 set fn=file!count!
 echo !fn!
 pause
 REM 7z.exe a -mx9 -mmt12 -sdel -pt3st! -mhe=on "!fn!.7z" "%~nxa"
)

E:\Temp\ziptest\Documents>(
cd "\Temp\ziptest\Documents\"
 set /A count += 1
 echo !count!
 set fn=file!count!
 echo !fn!
 pause
 REM 7z.exe a -mx9 -mmt12 -sdel -pt3st! -mhe=on "!fn!.7z" "Book1.xlsx"
)
1
file1
Press any key to continue . . .

E:\Temp\ziptest\Documents>(
cd "\Temp\ziptest\Documents\"
 set /A count += 1
 echo !count!
 set fn=file!count!
 echo !fn!
 pause
 REM 7z.exe a -mx9 -mmt12 -sdel -pt3st! -mhe=on "!fn!.7z" "COVID-19 Oakland County.xlsx"
)
2
file2
Press any key to continue . . .
windows command-line
  • 1 个回答
  • 1392 Views
Martin Hope
HTWingNut
Asked: 2020-03-28 10:44:33 +0800 CST

用于从日志文件中提取文件路径和文件名的批处理文件

  • 7

我真的很想弄清楚这一点,所以请耐心等待,并提前感谢您的帮助。我仍在努力理解正确使用FOR /F“Delims”和“Tokens”。

编辑:最终我需要/想要做的是包含标志*EXTRA File或Newer日志文件中的任何行,以提取文件路径和文件名并使用 ROBOCOPY 将这些文件复制到另一个驱动器,复制的文件在日期和时间戳文件夹。

我有一个看起来像这样的 robocopy 日志文件输出:

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows                              
-------------------------------------------------------------------------------

  Started : Friday, March 27, 2020 6:04:32 AM
   Source : P:\PC_BACKUP\
     Dest : X:\PC_BACKUP\

    Files : *.*

  Options : *.* /TS /FP /TEE /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /NP /MT:1 /R:2 /W:10 

------------------------------------------------------------------------------

      *EXTRA File         11.2 g 2020/03/25 06:09:27    X:\PC_BACKUP\DellAndrew\75E4FF97EDCDE7C0-09-09.mrimg
      *EXTRA File         29.7 g 2020/03/26 07:33:31    X:\PC_BACKUP\DellJordan\DC0297C23493575B-10-10.mrimg
      *EXTRA File         27.8 g 2020/03/26 05:10:12    X:\PC_BACKUP\P650HSG\677CFE5FA9EB27B1-10-10.mrimg
        Newer             15.2 g 2020/03/27 06:36:52    P:\PC_BACKUP\DellAndrew\75E4FF97EDCDE7C0-10-10.mrimg
        New File           2.2 g 2020/03/27 06:41:31    P:\PC_BACKUP\DellAndrew\75E4FF97EDCDE7C0-19-19.mrimg
        Newer             31.1 g 2020/03/27 07:36:04    P:\PC_BACKUP\DellJordan\DC0297C23493575B-11-11.mrimg
        New File           4.4 g 2020/03/27 07:44:55    P:\PC_BACKUP\DellJordan\DC0297C23493575B-23-23.mrimg
        Newer             27.8 g 2020/03/27 05:07:37    P:\PC_BACKUP\P650HSG\677CFE5FA9EB27B1-11-11.mrimg
        New File           1.8 g 2020/03/27 05:09:25    P:\PC_BACKUP\P650HSG\677CFE5FA9EB27B1-22-22.mrimg

------------------------------------------------------------------------------

               Total    Copied   Skipped  Mismatch    FAILED    Extras
    Dirs :         6         6         6         0         0         0
   Files :        74         6        68         0         0         3
   Bytes :   2.266 t  82.830 g   2.185 t         0         0  68.862 g
   Times :   0:16:49   0:04:12                       0:00:00   0:04:12


   Speed :           352546983 Bytes/sec.
   Speed :           20172.900 MegaBytes/min.
   Ended : Friday, March 27, 2020 6:12:56 AM

我已经设法将这个文件缩减为我想要使用的文件的路径和文件名(“Newer”和“*EXTRA File”路径)导出到日志使用:

set logname=%~1
findstr /L /G:extractnewer.txt %logname%.log > extract.log
findstr /L /G:extractextrafile.txt %logname%.log >> extract.log

setlocal DisableDelayedExpansion
for /f "tokens=1* delims=\" %%A in (extract.log) do echo %%B >> trim.log

可能有更好的方法可以做到这一点,但到目前为止它对我有用。所以 trim.log 输出看起来像这样:

PC_BACKUP\DellAndrew\75E4FF97EDCDE7C0-10-10.mrimg 
PC_BACKUP\DellJordan\DC0297C23493575B-11-11.mrimg 
PC_BACKUP\P650HSG\677CFE5FA9EB27B1-11-11.mrimg 
PC_BACKUP\DellAndrew\75E4FF97EDCDE7C0-09-09.mrimg 
PC_BACKUP\DellJordan\DC0297C23493575B-10-10.mrimg 
PC_BACKUP\P650HSG\677CFE5FA9EB27B1-10-10.mrimg 

最终,我需要将文件路径和文件名分开,以便我可以使用它们来进行 robocopy 文件复制。例如,它将遍历 trim.log 中的每一行:

filepath=PC_BACKUP\P650HSG\
filename=677CFE5FA9EB27B1-11-11.mrimg

所以我可以做一个:

robocopy X:\%filepath% T:\%datefolder%\%filepath%\ %filename%

但是我正在努力获得正确FOR /F的分别提取路径和文件的方法。

感谢您的任何帮助。

windows command-line
  • 1 个回答
  • 1396 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve