in reply to Re^6: sfv checker sting crc32
in thread sfv checker sting crc32

The scripts is intend to run on wingftp server for

incoming/uploaded dirs containg sfv, but its too hard for

me to installed and run it. It will check dirs and creating

empty dirs like --100% sfv crc ok-- if everything is ok and

mark bad missing files and create something like this --50% sfc crc--.

Replies are listed 'Best First'.
Re^8: sfv checker sting crc32
by soonix (Chancellor) on Oct 21, 2016 at 12:27 UTC
    it is supposed to be started like this
    checker path/to/download/folder
    However, it will prepend "/usr/files" to the folder name. You will have to change this within the script, as in Windows usually such a folder doesn't exist.

      Ok so i change it to

       "my $home  = "/Test01/TEST";"

      Where "Test01" is the name of the user, and "test" is the

      folder where the files will be uploaded, and save the .txt file.

      Now left the question where to put it and should i save it with extension "PL" for Perl script or leave it to text file.

        Where to put it? That's a question of how you want to organize it. My scripts live in several folders, depending on which project or topic they belong to...

        The .pl extension, I recommend you to keep it, because that's Windows' way to know it's a Perl script. (AFAIK, the installers of both Strawberry and ActivePerl associate it with the Perl interpreter.) On Unix/Linux/Os X, again, it would mostly depend on your preferences.

      In C:\Strawberry\perl\bin there are 2 crc files:

      crc32 no extension and crc32 (Windows Bath File)

      crc32 (Windows Bath File) code:

      @rem = '--*-Perl-*-- @echo off if "%OS%" == "Windows_NT" goto WinNT perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9 goto endofperl :WinNT perl -x -S %0 %* if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl if %errorlevel% == 9009 echo You do not have Perl in your PATH. if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul goto endofperl @rem '; #!/usr/bin/perl #line 15 # Computes and prints to stdout the CRC-32 values of the given files use 5.006; use strict; use lib qw( blib/lib lib ); use Archive::Zip; use FileHandle; use vars qw( $VERSION ); BEGIN { $VERSION = '1.51'; } my $totalFiles = scalar(@ARGV); foreach my $file (@ARGV) { if ( -d $file ) { warn "$0: ${file}: Is a directory\n"; next; } my $fh = FileHandle->new(); if ( !$fh->open( $file, 'r' ) ) { warn "$0: $!\n"; next; } binmode($fh); my $buffer; my $bytesRead; my $crc = 0; while ( $bytesRead = $fh->read( $buffer, 32768 ) ) { $crc = Archive::Zip::computeCRC32( $buffer, $crc ); } my $fileCrc = sprintf("%08x", $crc); printf("$fileCrc"); print("\t$file") if ( $totalFiles > 1 ); if ( $file =~ /[^[:xdigit:]]([[:xdigit:]]{8})[^[:xdigit:]]/ ) { my $filenameCrc = $1; if ( lc($filenameCrc) eq lc($fileCrc) ) { print("\tOK") } else { print("\tBAD $fileCrc != $filenameCrc"); } } print("\n"); } __END__ :endofperl

      Probably i must delete all and copy the script?

        Not sure, but they are probably unrelated to String::CRC32. I would leave them alone.