我的批次能力有限。為了產生許多文件的結果,我使用DIR /a-d /s /b > dirlist.txt
.我將 dirlist.txt 匯入 Excel(A 列),並使用它產生逐個檔案的命令(B 列),然後將其複製到批次檔中。它比循環更麻煩,但至少我理解它。
目前的情況需要CRC32計算。我有一個命令列工具,它僅表示 CRC32 值,而沒有相應的檔案名稱。因此,我的 Excel 解決方案ECHO D:\[full path].ext >> output.txt
在計算 CRC32 值(即與號 ( &
) 後跟)之前輸出檔案名稱(即) CRC32.exe "D:\[full path].ext" >> output.txt
。換句話說,電子表格會產生一個命令,其中指定檔案名,然後指定 CRC32 值。
不幸的是,這會將檔案名稱放在 output.txt 中的一行上,然後將 CRC32 值放在下一行上。我認為可以將兩者放在同一行,但這種情況似乎比我在教程中看到的簡單範例更複雜。那麼問題是,是否有相對直接的方法可以在單行輸出中聲明檔案名稱和 CRC32 值?
答案1
如果您並不完全反對完整的批次解決方案,那麼這應該適合您:
@echo off
set "list=dirlist.txt"
set "out=output.txt"
dir /a-d /s /b > %list%
setlocal enabledelayedexpansion
for /f "tokens=*" %%A in (%list%) do (
set "path=%%A"
for /f %%B in ('CRC32.exe "!path!"') do (
set "calc=%%B"
echo !path! + !calc! >> %out%
)
)
dirlist.txt
我們為和都設定了一個變量output.txt
,以便您可以更輕鬆地更新具有固定路徑的路徑(如果您願意),並且您的DIR
命令保持不變。對於循環,我們setlocal enabledelayedexpansion
可以使用循環內變數;我們的初始循環會查看token=*
您的每一行()dirlist.txt
並將其指派給%%A
我們將其設定為path
變數的參數。接下來,我們有一個嵌套循環,它CRC32.exe
以!path!
變數作為參數執行,並將輸出分配給參數%%B
,然後將其設為calc
變數。最後,我們可以在我們的 的同一行上呼應!path!
和。在上面的範例中,我用 a 將它們分開(根據您的問題的標題),但您可以使用您想要的任何內容,或者什麼都不用 - 只要記住您可能需要使用 轉義特殊字元 。 我想指出的是,我沒有 CRC32.exe,因此 for 迴圈中命令的語法是基於我對您的問題的理解。希望有幫助!!calc!
output.txt
+
^
答案2
對於目錄及其子目錄中的所有文件,使用 crc32.exe 計算其哈希/校驗和,並將同一行上的完全限定路徑名和哈希值輸出到文字檔案。
下載CRC32.exe並將其放入您的 Windows 資料夾中。
@echo off
setlocal enableextensions
cd.> dirlist.txt
for /F "eol=| tokens=* delims=" %%g in ('dir *.* /S /A-D /B 2^>nul') do (
for /F %%h in ('%systemroot%\crc32.exe "%%g"') do (
echo %%g + %%h >> dirlist.txt
)
)
exit
rem