« 似ていると思うのだけれど | トップページ | かわいらしい »

2024年5月14日 (火)

touchコマンドもどき Python版

朝からいい天気。

朝はひんやりであった。

 

随分前に、ファイルやフォルダの日付を最新にする、バッチファイルで実現するtouchコマンドもどきを作った。

少し前に話題にした、ファイルやフォルダの日付を、任意の日付にするプログラムで、Python版も作った。

ふと思った。

最新の日付にするだけだったら、GUIでなくてもいいのでは?

コマンドラインで、引数に、ファイルやフォルダを渡せば、touchコマンドもどき Python版が出来るのでは?と思って、作ってみた。
AIを活用すれば、あっという間に出来る。

「win32_setctime.setctime」というライブラリ(pip install win32-setctimeでインストール)を使っている。

import os
import sys
import time
import win32_setctime

def change_ff_timestamp(ff_path):
    current_time = time.time()
    os.utime(ff_path, times=(current_time, current_time))
    win32_setctime.setctime(ff_path, current_time)

'''
def create_file(ff_path):
    with open(ff_path, 'w') as f:
        f.write("")

def create_folder(folder_path):
    os.makedirs(folder_path)
'''

if __name__ == "__main__":
    args = sys.argv[1:]
    ts = 3

    if len(args) < 1:
        print("Usage: python touch.py <file or folder path>")
        time.sleep(ts)
        sys.exit(1)

    ff_path = args[0]

    if not os.path.exists(ff_path):
        print(f"Error: \"{ff_path}\" does not exist.")
        time.sleep(ts)
        sys.exit(1)

    '''
    create_choice = input(f"Error: {ff_path} does not exist. Do you want to create it? (yes | y / no | n): ")
    if create_choice.lower() in ['yes', 'y']:
        if '.' in os.path.basename(ff_path):
            create_file(ff_path)
            print(f"File \"{ff_path}\" has been created.")
            time.sleep(ts)
        else:
            create_folder(ff_path)
            print(f"Folder \"{ff_path}\" has been created.")
            time.sleep(ts)
            sys.exit(1)
    else:
        print("Operation canceled.")
        time.sleep(ts)
        sys.exit(1)
    '''

change_ff_timestamp(ff_path)

ドラッグ&ドロップで実行したいので、バッチファイル。

@echo off

start "" "フルパス\python.exe" "フルパス\touch.py" %1

バッチファイルでなくても、「"フルパス\python.exe" "フルパス\touch.py"」で、ショートカットを作成して、それにドラッグ&ドロップしてもいい。

スリープを設定しているのは、コマンドプロンプトがすぐに消えないようにするため。

基本は、存在するファイルやフォルダをドラッグ&ドロップで実行するので、エラー処理は特にしなくてもいいのだけれど、一応。

もし、コマンドラインで、ファイルやフォルダのパスを渡して、存在しなければ、それらを新規作成したいなら、上記のコメントしているところを外し、ファイルやフォルダの存在の有無をチェックしているところをコメントアウトすればいい。

これで、touchコマンドもどきが実現出来る。

ファイルやフォルダの日付変更プログラムを、Pythonでも作ったけれど、こうやって応用出来たから、無駄にはなっていない。(笑)

|

« 似ていると思うのだけれど | トップページ | かわいらしい »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« 似ていると思うのだけれど | トップページ | かわいらしい »