4

以下を使用して、ファイルのファイル バージョンを取得しています。

sigcheck.exe -n "C:\some.exe"

上記は次のようなものを返します: 12,2,0,6837.

このバージョン番号を取得するにはどうすればよいですか。, を削除して 1 つの大きな数字を作成し、それを 12.3.0.7218.txt などの txt ファイルの名前に保存されている別のバージョン番号と比較します (つまり、ファイルに保存されているファイル バージョンと同様のことを行います)。名前: . を削除して大きな数にします)。

名前にバージョンを含むファイルがアプリケーション ファイルのバージョンより新しい場合、つまり更新プログラムをインストールする場合、バッチ ファイルでコードを実行できる必要があります。

4

4 に答える 4

0

コンマを [何もしない] に変換する

set sig=12,2,0,6837
set sig=%sig:,=%
echo sig=%sig%

名前がディレクトリ内の最新のものであるなど、かなり多くのことを想定して、変数にファイル名を取得するには--詳細はわかりません。申し訳ありません-より具体的にする必要があります。

set "file="
for /f %%i in ('dir /b /a-d /o-d *.txt') do if not defined file set file=%%~ni
set file=%file:~.=%
echo %file%

ただし、すべては、ファイル名を取得する方法に依存します。


あなたが使用する場合

:: you are manually entering NEWVER
SET newver=1230718


for /f %%i in ( ' sigcheck.exe -n "C:\some.exe" ' ) do set sig=%%i
Echo As a check, sig retrieved was %sig%

set sig=%sig:,=%
echo Which gets transformed to sig=%sig%

if %sig% lss %newver% (ECHO New version to be installed
  ) else (echo do not install new version)

今、実行したい場合は

thisbatch 1230718

あなたは交換することができます

SET newver=1230718

SET "newver=%1"

これ1230718はバッチ プロセスthisbatch newverに指定された最初のパラメータであるため、に設定されます。 1230718

于 2013-04-04T10:01:10.780 に答える
0

コンマを削除します。

set "v1=12,2,0,6837"
set "v1=%v1:,=%"

ドットを削除:

set "v2=12.3.0.7218"
set "v2=%v2:.=%"
于 2013-04-04T10:01:43.517 に答える